SQL 结果与照片重复
SQL result duplicates the 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
我是不是漏掉了什么或者出了什么问题?
您缺少前两个表的连接条件。这可能是您遇到问题的原因:
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
,这可能会导致重复。
我想显示所有带有特定标签的照片,但它只会复制照片。如果我选择另一个标签,它不会显示重复的照片。
对于标签 "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
我是不是漏掉了什么或者出了什么问题?
您缺少前两个表的连接条件。这可能是您遇到问题的原因:
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
,这可能会导致重复。