MySQL4.1.12において以下の2つのテーブルを結合したいのですがうまくいきません


テーブルA(ファイル管理テーブル)
file_id, file_name, file_cat

テーブルB(閲覧権限管理テーブル)
file_id, user_id

条件)
ファイルの名前は一つ目から最後まで常に表示し、ユーザーが閲覧権限を持っていれば”閲覧”ボタンを表示。持っていなければ”申請”ボタン
を表示する形にしたい

例えば以下のようにLEFT JOINすると該当ユーザー以外の情報も含まれた形で結果を取得してしまいます
例)SELECT a.file_id, a.file_name, b.user_id FROM a LEFT JOIN b ON a.doc_id = b.doc_id

また、where句を追加し該当ユーザーに絞り込むと両方のテーブルでマッチした行しか結果が取得できなくなってしまいます
例)SELECT a.file_id, a.file_name, b.user_id FROM a LEFT JOIN b ON a.doc_id = b.doc_id where user_id = 該当ユーザーのID

なんとかしてすべてのファイルの名前+該当ユーザーのみの閲覧権限が結合した結果を取得したいのですがよい方法はないでしょうか(代替案でもけっこうです)
どんぴしゃかつ具体的な回答をいただけた場合は300ポイント差し上げます

回答の条件
  • 1人2回まで
  • 登録:2007/05/15 06:56:23
  • 終了:2007/05/15 07:33:32

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/05/15 07:12:17

ポイント300pt

4.1 ならサブクエリが使えますね。

SELECT a.file_id, a.file_name,
 EXISTS ( SELECT * FROM b WHERE a.doc_id = b.doc_id where user_id = ${user_id} ) AS permit
FROM a;

な感じかな。

id:jayz

ありがとうございます。どんぴしゃです

あぁ、いろいろ調べたのにこういうやりかたがあったんですね。。。

2007/05/15 07:32:31

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません