2015-01-31 6 views
1

Я хочу показать все фотографии с определенным тегом, но он только дублирует фотографии. Если я выберу другой тег, он не отобразит дублированные фотографии.Результат SQL дублирует фотографии

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 

ли я что-то пропустил или в чем проблема?

ответ

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, что, вероятно, приведет к дублированию.

+0

Большое спасибо! Это было то, что я пропустил. Я приму свой ответ, как только смогу :) – Erik

Смежные вопросы