один ко многим MySQL запрос - PullRequest
1 голос
/ 09 января 2012

Эй, ребята, извините за вопрос, но мне нужна помощь с этим запросом, пожалуйста, я возился с различными решениями, но до сих пор не смог решить его сам.

У меня есть 4 таблицы с именами customer, figures, notes и lender. У всех них есть поле с именем reference, которое я использую, чтобы связать их вместе. Клиент является основной таблицей, и в таблице цифр для каждого клиента есть только одна запись, поэтому я могу сделать:

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

Однако для каждого клиента может быть несколько записей и записей кредитора. Как я могу связать их, чтобы показать только одну запись?

В идеале, можно было бы отобразить это как:

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

1 Ответ

1 голос
/ 09 января 2012

Вы можете использовать group_concat () :

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, вы должны изменить его на любой из ваших столбцов.

...