2012-01-09 20 views
1

ご質問申し訳ありませんが、私はこのクエリーで助けが必要です。私はいろいろなソリューションを使いこなしていますが、それまで自分で解決することはできませんでした。1対多のmysqlクエリー

customer,figures,notesおよびlenderという4つのテーブルがあります。彼らはすべてreferenceというフィールドを持っています。これは私がそれらをリンクするために使用しているものです。お客様は、主テーブルで、私が行うことができますので、1つのレコードのみが各顧客のための数値表にあります:

select * From customer, figures 
where customer.reference = figures.reference 

しかし、顧客ごとに複数のメモや貸し手の記録があるかもしれません。 1つのレコードだけを表示するにはどうすればリンクできますか?あなたはgroup_concat()を使用することができます

reference, name, figures, lender 1, lender 2, note 1, note 2, note 3 
+0

CTEの仕事のように聞こえる – Alex

答えて

1

理想的には、としてそれを表示する方法があるでしょう

SELECT customer.reference, customer.name, figures.name, 
GROUP_CONCAT(DISTINCT lender.name), 
GROUP_CONCAT(DISTINCT notes.name) 
FROM customer 
JOIN figures ON figures.reference = customer.reference 
LEFT JOIN lender ON lender.reference = customer.reference 
LEFT JOIN notes ON notes.reference = customer.reference 
GROUP BY customer.reference; 

テーブルの各フィールドnameを持っている、あなたはそれを変更すべきであると仮定すると、あなたのコラムが何であっても。