MySQL - 加入生产"额外"结果如何?

时间:2014-11-12 21:48:55

标签: php mysql

如果没有向您展示我所拥有的内容,就很难解释这个问题,所以我们将从那开始:

http://i.stack.imgur.com/scpv6.png

http://i.stack.imgur.com/XZFQR.png

查询:

SELECT goodies.title FROM `goodies` LEFT JOIN `goody_images`
ON goodies.id=goody_images.goodie_id

原始结果:

糖果
糖果
帽子

问题:

每个连接值产生额外的结果。由于 goody_images 中的两个人都拥有 1 goodie_id ,因此会从打印相应的标题 >好东西两次,这就是为什么我们两次看到结果 candy 。无论匹配JOIN结果的数量是多少,我都需要它只给我一次 title

这是可能的,还是我最好再运行两个单独的查询?

在PHP的上下文中,我试图获得两个值:

- 一个标题,
-And和一个包含匹配图像的数组。

所有这些已经完成的编程完全可以运行 - 问题只在于正确地获得结果。

+ 以上查询为简单起见缩写

2 个答案:

答案 0 :(得分:5)

使用distinct

SELECT distinct goodies.title 
FROM `goodies` 
LEFT JOIN `goody_images` ON goodies.id=goody_images.goodie_id

group by

SELECT goodies.title 
FROM `goodies` 
LEFT JOIN `goody_images` ON goodies.id=goody_images.goodie_id
GROUP BY goodies.title 

答案 1 :(得分:1)

它没有显示额外的记录它显示糖果两次,因为goodie_id 1有两个图像,但如果你只想选择标题那么你可以使用

SELECT goodies.title FROM `goodies` LEFT JOIN `goody_images`
ON goodies.id=goody_images.goodie_id group by goodies.title