人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL4.1において以下のテーブルがあります

■docテーブル
doc_id | doc_name
-----------------
1 | name1
2 | name2
3 | name3
4 | name4
5 | name5
6 | name6
7 | name7

■authテーブル
user_id | doc_id | date
----------------------------
1 | 1 | 2006-4-4
1 | 2 | 2006-4-4
1 | 1 | 2005-2-4
2 | 1 | 2007-11-3


上記2つのテーブルを結合し

?user_id が"1"の行であること。
?同一ユーザーで同じ doc_id を持つ行がある場合は日付が新しい方を取り出すことと。
?doc_idは1?7まで表示(登録されているdoc_idはすべて表示する)。

上記の条件を満たし以下のような結果を得たいのですがどようようなSQL文を発行すればよいでしょうか

doc_id | date
-------------------
1 | 2006-4-4
2 | 2006-4-4
3 |
4 |
5 |
6 |
7 |

一番参考になる回答をいただけた方に300P差し上げます
よろしくお願いします

●質問者: jayz
●カテゴリ:ウェブ制作
✍キーワード:2006 ?D DOC SQL ユーザー
○ 状態 :終了
└ 回答数 : 2/4件

▽最新の回答へ

1 ● irhnhhtn
●35ポイント

SELECT doc.doc_id, subQuery.max_date

FROM doc LEFT JOIN (SELECT Max(auth.date) AS max_date, auth.doc_id

FROM auth

WHERE auth.user_id =1

GROUP BY auth.doc_id) as subQuery

ON doc.doc_id = subQuery.doc_id

ORDER BY doc.doc_id;

※1 上記SQLServerで検証したものです、MySQLだと方言がでるかもしれません。

※2 型はdoc_idは数値、dateは日付、その他は文字列としています。

※3 dateはSQLServerでは予約語なので、項目名変えて実行した後、dateに書き換えました。


2 ● chuken_kenkou
●300ポイント

こんな感じでしょう。

select x.doc_id,max(y.date) as date
 from doc as x
 left join auth as y
 on x.doc_id=y.doc_id and y.user_id=1
 group by x.doc_id
◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ