• ベストアンサー

1対多結合で多を絞り込み条件とするSQLについて

sqlalchemy を使用 親テーブル id name 1 スズキ 2 タナカ 3 マイク 4 ルイ 5 ジャック 子テーブル id user_id pname number 1 1 リンゴ 2 2 1 バナナ 1 3 1 ブドウ 3 4 2 リンゴ 2 5 2 バナナ 2 6 2 ブドウ 1 7 3 イチゴ 5 8 3 バナナ 3 9 3 ブドウ 1 リンゴを持っている且バナナのnumberで並べ替えしたいので実現方法おしえていただければと思います。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

Accessでの荒っぽいやり方だと思いますが3個のクエリでいけるような気がします。 親テーブルのnameはMynameに変更しています。 最終クエリ SELECT 子テーブル.user_id, 親テーブル.Myname, 子テーブル.pname, 子テーブル.number FROM クエリ3 INNER JOIN (クエリ2 INNER JOIN (親テーブル RIGHT JOIN 子テーブル ON 親テーブル.ID = 子テーブル.user_id) ON [クエリ2].user_id = 子テーブル.user_id) ON [クエリ3].user_id = [クエリ2].user_id GROUP BY 子テーブル.user_id, 親テーブル.Myname, 子テーブル.pname, 子テーブル.number, [クエリ3].number ORDER BY [クエリ3].number; クエリ2 SELECT 子テーブル.pname, 子テーブル.user_id FROM 子テーブル WHERE (((子テーブル.pname)="リンゴ")); クエリ3 SELECT 子テーブル.user_id, 子テーブル.pname, 子テーブル.number FROM 子テーブル WHERE (((子テーブル.pname)="バナナ")) ORDER BY 子テーブル.number;