質問: '00001' ``` これを流すと、以下のように取得されてしまい、ここから手が止まってしまいました。 ``` |購入者コード|図書分類A|図書分類B| |00001 |AA001 |BB001 | |00001 |AA002 |BB001 | |00001 |AA001 |BB002 | |00001 |AA002 |BB002 | |00001 |AA001 |BB003 | |00001 |AA002 |BB003 | ``` どのような条件にすればよいかご教授いただければと思います。 よろしくお願いいたします。
回答: まず、「実現したいこと」と「#抽出後のテーブル」が、少なくとも私には合ってないと思ったので、 一旦置いておきます。 #図書テーブルが、「実現したいこと」と一致してる気がします。 #「実現したいこと」は・・何を出力したいか、よくわかりません。 手が止まってしまったというのは、SQLの仕組みの理解途中と思われますが、 > > SELECT > > 購入者テーブル.購入者コード > > , 分類A.図書分類A > > , 分類B.図書分類B > > FROM > > 購入者テーブル > > LEFT OUTER JOIN ( > > SELECT > > 購入者コード AS A_購入者コード > > , 分類 AS 図書分類A > > FROM > > 図書テーブル > > WHERE > > 分類 = 'A' > > ) AS 分類A > > ON 図書テーブル.購入者コード = 分類A.A_購入者コード > > > これで、 > > |購入者コード|図書分類A|図書分類B| > > |00001 |AA001 | > > |00001 |AA002 | > > > これになるのは、分かりますか? 何か事情があるかもしれませんが、そもそも例のテーブルが正規化されてないのが、 理解を妨げている要因かもしれません。 図書テーブルは、 ・図書管理テーブル管理番号]分類 ・図書購入実績[購入者コード][管理番号 に分割すべきです。