#php #mysql
#php #mysql
Вопрос:
table event
id idArtist City Img
__________________________________
1 51 Lonon 01.jpg
.. . .. .. .etc
table artist
id Name Img01 Img02 Img03 Img_Txt01 Img_Txt02 Img_Txt03
_________________________________________________________________________
51 Bob 54.jpg 01.jpg NULL text 01 Text 02
Мне нужно отобразить ВСЕ изображения из таблицы событий и отобразить их текст, хранящийся в таблице Artist (вы видите Img == Img02, тогда мне нужен Img_Txt02)
Как я могу сделать?? Много thxxxxx
Комментарии:
1. Что происходит, когда у исполнителя есть 4 изображения? Вам следует посмотреть на нормализацию ваших таблиц и детали разделения изображений в отдельной таблице.
Ответ №1:
SELECT event.Img,artist.Img_Txt02
FROM event LEFT JOIN artist
ON event.idArtist=artist.id
Предполагая, что я правильно понял ваш вопрос.
Комментарии:
1. Это сработало бы только в том случае, если художник сделал только один снимок. Если у художника две картинки, вы получите 4 записи вместо двух.
2. ДЕЛО В ТОМ, ЧТО Img также может быть 54.jpg … Я могу выбрать это из области администрирования
Ответ №2:
Повторить на основе уточнения OP
Поскольку вы не знаете, на какие поля мы будем ссылаться в таблице artist (img01, img02, img03), я бы предложил создать представление, которое улучшает макет таблицы artist, чтобы мы могли ссылаться на нее. Вот код, который я бы использовал:
SELECT id, Name, Img01 AS Img, Img_Txt01 AS Img_Txt
FROM artist
UNION ALL
SELECT id, Name, Img02, Img_Txt02
FROM artist
UNION ALL
SELECT id, Name, Img03, Img_Txt03
FROM artist
Это даст вам список, на который вы можете ссылаться. Это также позволило бы вам довольно просто расширить вашу таблицу исполнителей (добавить Img4, Img5 и т.д.) Вы также могли бы использовать это приведенное выше утверждение непосредственно в вашем окончательном запросе следующим образом:
SELECT event.*, images.Img_Txt
FROM event
INNER JOIN
(SELECT id, Name, Img01 AS Img, Img_Txt01 AS Img_Txt
FROM artist
UNION ALL
SELECT id, Name, Img02, Img_Txt02
FROM artist
UNION ALL
SELECT id, Name, Img03, Img_Txt03
FROM artist) AS images
ON event.idArtist = images.id AND event.Img = images.Img_Txt
Комментарии:
1. ДЕЛО В ТОМ, ЧТО Img также может быть 54.jpg … Я этого не знаю, поэтому = artist.Img02 неверно!
2. @Ste — ваш первоначальный пост был не очень ясным, поэтому все вас неправильно поняли. Однако, основываясь на новой информации, я скорректировал свой пост в соответствии с вашими потребностями.