2015-12-07 4 views
0

У меня есть несколько таблиц следующим образом:MySQL Query, чтобы избежать дублирования результатов

ТАБЛИЦА 1: Продукт

+-----+----------+--------+---------------------+ 
| id | biz_id | name | message   | 
+-----+----------+--------+---------------------+ 
| 1 | 1  | test1 | One tow three  | 
| 2 | 1  | test1 | One tow three  | 
| 3 | 1  | test1 | One tow three  | 
| 4 | 2  | test2 | hello world   | 
| 5 | 2  | test2 | hello world   | 
+-----+----------+--------+---------------------+ 

ТАБЛИЦА 2: Изображения

+-----+----------+--------------+-------------------+ 
| id | biz_id | product_id | path   | 
+-----+----------+--------------+-------------------+ 
| 1 | 1  | 1   | img/qwert1.jpg | 
| 2 | 1  | 2   | img/qwert2.jpg | 
| 3 | 1  | 3   | img/qwert3.jpg | 
| 4 | 2  | 4   | img/qwery4.jpg | 
| 5 | 2  | 5   | img/qwert5.jpg | 
+-----+----------+--------------+-------------------+ 

Как я могу избежать дублировать в mysql при соединении нескольких таблиц?

Мой запрос соединяется с обеими таблицами так, что я хочу избежать дублирования продукта (получить продукт Distint по имени) и получить все изображения, связанные с этим продуктом (например, Product> name - test1 имеет изображения qwert1.jpg, qwert2.jpg , qwert2.jpg)

+0

Что бы желаемого результата выглядеть? – Strawberry

ответ

0
SELECT p.name, GROUP_CONCAT(i.path) 
    FROM product AS p 
    INNER JOIN images AS i ON p.id = i.product_id 
    GROUP BY p.name; 

Пожалуйста, обратите внимание, что это не стандарт SQL, но большинство СУБД предлагают эту функцию (хотя ключевое слово может быть немного по-другому).

0

простое соединение должно делать все

select p.name as Name, i.message as IMG from Images 
left join Product p 
on i.biz_id=p.biz_id 
group by p.name; 
0

left join использования с GROUP_CONCAT или group by

select p.name name,GROUP_CONCAT(i.path) img 
from Images i left join Product p 
on i.biz_id=p.biz_id 
group by i.product_id 
Смежные вопросы