前提
テーブルatable
・idカラム
・titleカラム
テーブルbtable
・b_idカラム
・b_titleカラム
テーブル関係
・1つのatableに対して複数btable
最終的にやりたいこと
atableのidカラム毎に以下の内容を取得したい
・1つのatable1レコードに対して、btableのレコードが2つあった場合
(
[id] => 1
[title] => atableのレコード1内容
[b_title] => btableのレコード9内容,btableのレコード23内容
期待した結果を取得できたSQL
SQL
1SELECT 2 a.id, 3 r.b_id, 4 GROUP_CONCAT(b_title) AS b_title 5FROM atable AS a 6LEFT OUTER JOIN( 7 SELECT 8 b_id,b_title 9 FROM 10 btable 11) AS r ON a.id = r.b_id 12 13GROUP BY a.id
期待した結果を取得できないSQL1
・SELECT で、r.b_idを外すと、a.idの結果がおかしくなる(上記と比較すると、a.idの取得値が変更される。何の値かは不明)
SQL
1SELECT 2 a.id, 3 GROUP_CONCAT(b_title) AS b_title 4FROM atable AS a 5LEFT OUTER JOIN( 6 SELECT 7 b_id,b_title 8 FROM 9 btable 10) AS r ON a.id = r.b_id 11 12GROUP BY a.id
期待した結果を取得できないSQL2
・SELECT で、a.idを外すと、r.b_idの結果がおかしくなる(r.b_idの取得値が変更される。何の値かは不明)
SQL
1SELECT 2 r.b_id, 3 GROUP_CONCAT(b_title) AS b_title 4FROM atable AS a 5LEFT OUTER JOIN( 6 SELECT 7 b_id,b_title 8 FROM 9 btable 10) AS r ON a.id = r.b_id 11 12GROUP BY a.id
回答2件
あなたの回答
tips
プレビュー