2015-12-07 130 views
0

我有多个表如下:MySQL查询,以避免重复结果

表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 has images 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,但大多数DBMS提供此功能(尽管关键字可能会有点不同)。

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 joinGROUP_CONCATgroup 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