Я пытаюсь распаковать систему макетов, которая организует изображения и текст, например, так:
С проблемой в том, что мне нужно (как-то) связать каждый text.content
как с его записью, так и с первым images.filename
, за которым следует .По сути, ввести двоюродных братьев.
В идеале я хотел бы получить что-то вроде:
| entry.id | images.filename | texts.content
|-----------|------------------|--------------
| 0 | img.jpg | lorem
Ранее я успешно связывал изображения с их записями, используя серию LEFT JOIN
s, например:
SELECT entries.id, images.filename
FROM images
LEFT JOIN containers
ON images.container_id = containers.id
LEFT JOIN layers
ON containers.layer_id = layers.id
LEFT JOIN entries
ON layers.entry_id = entries.id
Но это не работает при попытке связать тексты с изображениями, потому что они не связаны напрямую.Вы должны подняться на начальный уровень, чтобы определить ассоциацию, но как вы затем отслеживаете лучшего кандидата для ближайшего изображения?
В настоящее время
Я чувствую, чтоЯ подхожу к тому, что, по крайней мере, ассоциирует изображения и тексты с одной и той же записью с:
SELECT entries.id, images.filename, texts.content
FROM entries, images, texts
LEFT JOIN containers a
ON texts.container_id = a.id
LEFT JOIN containers b
ON images.container_id = b.id
LEFT JOIN layers
ON containers.layer_id = layers.id
LEFT JOIN entries
ON layers.entry_id = entries.id
Хотя по некоторым причинам это все еще отбрасывает Not unique table/alias: 'entries'
.
Таким образом, я пробовал использовать псевдонимы здесь (что на самом деле не похоже) и начал взламывать вопросов, связанных с подзапросами , но ... я исчерпалпоисковых терминов.
Возможно ли это вообще?
Для ясности, я не ищу здесь полного ответа, только некоторые подсказки о том, как я могу использовать JOIN дляследующее:
A) Отображение текстов и изображений и их ассоциаций (я думаю, что я здесь близко).
B) Ассоциирование одной текстовой записи с данными из любой записи изображенияследует за ним. .Сейчас это кажется невозможным, но я думаю, именно поэтому я спрашиваю людей, которые знают больше, чем я.
РЕДАКТИРОВАТЬ: обратите внимание, что может быть несколько слоев, содержащих изображения или тексты, и мне нужно вернуть всех текстов из каждой записи.