みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

別テーブルのカラムを利用してソートしたい

別テーブルのカラムを利用してソートしたい

MySQLバージョン4.1.16を使用しています。
テーブル「tbl1」をテーブル「tbl2」のcountというカラムを利用して
ソートしたいのですが、どのようなSQL文になるのでしょうか?
「tbl2」のidというカラムは外部キーで「tbl1」のidと関係しています。

テーブル「tbl1」
+------+---------+
|   id |  userid  |
+------+---------+
|  1  | tanaka  |
|  2  | sato   |
+------+---------+

テーブル「tbl2」
+------+---------+
|   id |  count  |
+------+---------+
|  1  |   10  |
|  2  |   3   |
+------+---------+




次のような文かなと思ったのですが、エラーが返ってきます・・・

SELECT * FROM tbl1 ORDER BY (SELECT id FROM tbl2 ORDER BY count)

投稿日時 - 2008-02-25 16:28:59

QNo.3808623

すぐに回答ほしいです

質問者が選んだベストアンサー

tab1:

id__user_id
1__tanaka
2__sato

tab2:

id__tab1_id__count
1______1_________10
2______2___________3

id__user_id
2__sato
1__tanaka

SELECT*
FROM tab1 INNER JOIN tab2 ON tab1.id=tab2.tab1_id
ORDER BY tab2.count;

SELECT *
FROM tab1
ORDER BY CInt(DBLOOKUP("SELECT [count] FROM tab2 WHERE tab1_id=" & id));

MySQL は一度も使ったことはありませんが、多分、INNER JOIN を使えば良いと思います。

質問者のように WHERE節で SELECT文を使うには DBLOOKUP関数の類を自作するしかないと思います。
いわゆるサブクエリーを WHERE節に使おうとしたのが誤まりじゃないですかね。

しかし、列名には name、count など予約語は使われない方が良いと思います。

なお、文法上 MySQLに相応しくない点は修正されて下さい。
考え方のみを参考になさって下さい。

投稿日時 - 2008-02-25 17:17:54

お礼

ご返答ありがとうございます。
そのやり方でできました。ありがとうございます。

投稿日時 - 2008-02-25 18:26:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問