MYSQL(4.0.26)について質問です。

「テーブル:A」の「カラム:no」に1~20のランダム値が入っています。
「テーブル:B」の「カラム:no」に1~10の値が入っており、
かつ、「カラム:yyyymmdd」という日付が「20070320」という形式で、各番号に紐付き入っています。
「テーブル:C」の「カラム:no」に11~20の値が入っています。
かつ、「カラム:yyyymmdd」という日付が「20070320」という形式で、各番号に紐付き入っています。

ここで、「テーブル:A」の「カラム:no」の日付を求めようと思いますが、
下記のSQLでは、エラーとなってしまいます。

SELECT t1.no ,t2.yyyymmdd FROM A as t1
LEFT OUTER
(
SELECT t3.no,t3.yyyymmdd FROM B t3
UNION ALL
SELECT t4.no,t4.yyyymmdd FROM C t4
) as t2
ON t1.uid = t2.uid
ORDER BY t2.yyyymmdd

MYSQLのバージョンが悪いのか、私のSQLが悪いのかわかりませんが、
ご教授、よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/03/27 07:55:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 b-wind 3344 3206 440 2007-03-20 09:50:57
2 kurukuru-neko 1844 1736 155 2007-03-20 17:28:11
3 chuken_kenkou 722 671 54 2007-03-20 19:26:29
  • id:kurukuru-neko
    [補足]
    indexがうまく使われませんが以下でも
    動くことは動きます。

    例1:
    select
    distinct distinct a.no,
    if( a.no <=10,b.yyyymmdd,c.yyyymmdd) as yyyymmdd
    from a,b,c
    where a.no = b.no or a.no = c.no
    order by yyyymmdd asc;

    例2:
    select
    distinct a.no,
    if( a.no <=10,b.yyyymmdd,c.yyyymmdd) as yyyymmdd
    from a,b,c
    where a.no in( b.no, c.no )
    order by yyyymmdd asc;

    例3:
    select
    t1.no
    ,yyyymmdd from a as t1
    left join (
    select no,yyyymmdd from b
    union all
    select no,yyyymmdd from c
    ) as t2 on t1.no = t2.no
    order by yyyymmdd asc;

    例4:
    select no,yyyymmdd from a cross join b using(no)
    union
    select no,yyyymmdd from a cross join c using(no)
    order by yyyymmdd asc;

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません