###3つのテーブルを結合して、最小値の列があるレコードを取得する方法
勉強でなっとくいくSQLができなくて悩んでいます( ;∀;)
###データベース
以下のテーブルがあります。
ユーザーテーブル:users_table (id,user_name)
所属情報テーブル:user_rel_table (user_id,dept_id,kubun)
所属テーブル:dept_table (id,dept_name,dept_address)
関係はこんな感じです
ユーザーテーブル<-n対n->所属情報テーブル<-n対1->所属テーブル
上記の3つのテーブルを結合するさい、所属情報テーブルに同じuser_idがある場合は、kubunが最小値のレコードのdept_idでdept_tableからデータを取得したいのですが全然できなくて悩んでいます。
###試したこと
-- 単純に結合するだけ SELECT u.id, u.user_name, ur.user_id, ur.dept_id, ur.kubun, d.dept_name, d.dept_address FROM users_table u LEFT JOIN user_rel_table ur ON u.id = ur.user_id LEFT JOIN dept_table d ON d.id = ur.dept_id
さらに結合する際、所属情報テーブルに複数同じuser_idがある場合、
kubunが最小値のレコードのdept_idでdeptと関連したいのですがなかなかうまく行きません。
どうすればよろしいでしょうか???
SELECT u.id, u.name, ur.name, ur.user_id, ur.dept_id, ur.min, d.dept_name, d.dept_ryakusyo FROM users_table u LEFT JOIN ( SELECT ur.name, ur.user_id, ur.dept_id, min(kubn) AS min FROM user_rel_table GROUP BY user_id ) ur ON ur.user_id =u.id LEFT JOIN dept_table d ON d.id = ur.dept_id
###補足情報(言語/FW/ツール等のバージョンなど)
サーバのバージョン: 10.1.22-MariaDB - mariadb.org binary distribution
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/03 03:14