OUTER JOIN とgroup by
こんにちは。
mysqlのselect文なのですが、LEFT OUTER JOIN した右側をgroup byし、そのなかで最大値を持つものを結び付けたいのですが、四苦八苦やってみたところ2日ほど解決できず・・・。
どなたかご教授いただけますと助かります。
テーブルなどは以下の通りです。
---tableA----(テーブル名)
user / supplier(カラム名、以下レコード)
1 / 1
1 / 2
1 / 3
2 / 1
2 / 3
---tableB---
skuno / supplier / update_at
1 / 1 / 2011-12-12
2 / 1 / 2011-12-13
3 / 1 / 2010-11-10
検索の目的は、特定のカラムuserに対応する(例えばuser = 1)supplierの値(1,2,3)を取り出し、tableBにおいて、それぞれの値に結びつくskunoのうち最新のupdate_atを持つskunoを取り出したいというものです。
上記の例の場合、希望する検索結果は以下のような想定です。
supplier / skuno
1 / 2
2 / null
3 / null
私が検討してみたsql文は以下の通りなのですが、
select supplier,skuno from tableA LEFT JOIN tableB ON tableA.supplier = tableB.supplier where tableA.user = 1 and tableB.update_at IN (select max(update_at) from tableB group by supplier) group by tableA.supplier;
この場合だと、右側がnullだとsupplierの値が表示されず、
supplier / skuno
1 / 2
となってしまいます。
select supplier,skuno from tableA LEFT JOIN tableB ON tableA.supplier = tableB.supplier where user = 1 group by supplier;
だと右側のテーブルの値が指定できず・・・
ここからどのように条件付けをしたらよいのか、お力添えをいただけますと幸いです。
よろしくお願い申し上げます。