SQL结果重复照片

时间:2015-01-31 14:29:44

标签: sql join pdo duplicates

我想要显示所有具有特定标签的照片,但它只会复制照片。如果我选择其他标签,则不会显示重复的照片。

duplicated photos not duplicated photos

对于标签“Natur”,它应该只有2张照片,对于标签“Berg”,它应该只有1张照片。

SQL

SELECT *
FROM photos AS p
JOIN tags_photos AS tp
JOIN tags_names AS tn
ON tp.id_tag = tn.id
WHERE tn.data_name_seo = :name_seo
ORDER BY p.datetime_taken DESC

数据库:tags_photos

id
id_photo
id_tag

数据库:tags_name

id
data_name
data_name_seo

数据库:照片

id
data_file_name
datetime_taken

我错过了什么或者问题是什么?

1 个答案:

答案 0 :(得分:2)

您缺少前两个表的连接条件。这可能是导致问题的原因:

SELECT *
FROM photos AS p JOIN
     tags_photos AS tp
     ON tp.id_photo = p.id JOIN
     tags_names AS tn
     ON tp.id_tag = tn.id
WHERE tn.data_name_seo = :name_seo
ORDER BY p.datetime_taken DESC

在大多数数据库中,缺少on子句会产生错误。在MySQL中,JOIN被视为CROSS JOIN,这可能会导致重复。