MySQL: выбор данных из нескольких таблиц - PullRequest
1 голос
/ 19 июля 2011

Мне нужна помощь в создании запроса MySQL для выбора из нескольких таблиц.У меня есть три таблицы базы данных, связанные с изображениями: images, tags, tag_asc.Я хочу получить данные изображения и имена его тегов, указав image_id.

Например, следующая структура моих таблиц:

images:

image_id    image_name     path       date   
1            test.jpg      dir       1311054433

теги:

tag_id      image_id
1             1
2             1

tag_asc:

tag_id      tag_name
1            "first"
2            "second"
3            "third"

Я хочу получить данные изображения с помощью image_id = 1 из таблицы изображений и всех имен тегов, связанных с image_id=1 из tag_asc таблицы.

Я использую записи CodeIgniter Active, но мне просто нужна идея объединения таблиц.

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 19 июля 2011
select *
from images i
left join tags t on t.image_id = i.image_id
left join tag_asc ta on ta.tag_id = t.tag_id
where i.image_id = 1;

Использование LEFT JOIN означает, что строки будут возвращены, даже если в других таблицах нет соединяющихся строк (но вы получите null значения в столбцах для пропущенных строк), что обычно желательно.

Если вы хотите одну строку (не указано в вопросе, но в комментариях), используйте это:

select i.image_id, group_concat(tag_name) as tag_names
from images i
left join tags t on t.image_id = i.image_id
left join tag_asc ta on ta.tag_id = t.tag_id
where i.image_id = 1
group by 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...