Я имею эту схему:Выбрать все значения из таблицы B, где соответствует таблице A
items | taxonomy | subjects
| |
ID headline | item_id subject_id | subject_id subject
-------------------------------------------------------------------------
1 information | 1 1 | 1 cities
2 here we are | 2 1 | 2 towns
3 more things | 3 2 | 3 water
4 doo dah | 3 4 | 4 telephones
| 4 1 |
| 4 3 |
Я хотел бы, чтобы выбрать одну строку из «элементов», а с ним, включаю в себя все строки из «субъектов», который соединены таблицей «таксономии». Так, например, получение item.ID=3
приведет к чему-то вроде:
items.ID = 3
items.headline = "more things"
subjects.subject = "towns"
subjects.subject = "telephones"
Я начал с этим запросом
SELECT
i.ID,
i.headline,
s.subject_name
FROM items i
JOIN taxonomy t
on i.ID=t.item_id
JOIN subjects s
on t.subject_id=s.subject_id
WHERE i.ID = 3
Но это возвращает только одно значение из subject_name
, даже если есть несколько значений, связанных с что item_id.
РЕДАКТИРОВАТЬ я на самом деле был LIMIT 1
на запросе, который вызывает (как сказал @Gordon Linoff) только один ряд, чтобы быть возвращен, даже хотя было несколько строк в наборе результатов, соответствующий нескольких предметов. Его решение по-прежнему хорошо, потому что я хочу только вернуть один ряд.
Ваш запрос выглядит правильно. Как вы смотрите на результаты? –
изначально это в PHP-приложении, но теперь я устраняю проблему с помощью phpmyadmin. – JakeParis
Я подумал, что, возможно, результирующему набору не разрешено иметь несколько полей с тем же именем '(ID, subject, subject)'. – JakeParis