【发布时间】:2019-09-28 05:53:38
【问题描述】:
我正在尝试解压缩一个像这样组织图像和文本的布局系统:
挑战在于我需要(以某种方式)将每个text.content 与其条目以及跟随它的第一个images.filename 相关联。基本上介绍了第二代堂兄弟。
理想情况下,我会得到类似的东西:
| entry.id | images.filename | texts.content
|-----------|------------------|--------------
| 0 | img.jpg | lorem
我之前成功地使用一系列LEFT JOINs 将图像与其条目相关联,如下所示:
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'。
到目前为止,我已经尝试了建议的别名内容 here(这似乎并不适用)并开始在 questions dealing with subqueries 进行黑客攻击,但是......我已经用完了搜索词。
这可能吗?
需要明确的是,我不是在这里寻找完整的答案,只是关于如何使用 JOIN 执行以下操作的一些提示:
A) 显示文本和图像及其条目关联(我想我已经接近了。)
B) 将一个文本条目与其后面的任何图像条目的数据相关联。。现在这感觉像是不可能的,但我想这就是为什么我要问比我了解更多的人。
编辑:请注意,可以有多个图层包含图像或文本,我需要从每个条目返回 所有 文本。
【问题讨论】:
-
你如何确定一个特定的容器包含图像或文本?这些表中的一个 id(s) 是否具有图像或文本的固定值?
-
Madhur Bhaiya : 容器不知道它们包含什么——它们的 id 只是被它们的孩子(图像或文本)引用。
-
那么,您是否确保图像和文本表中不会出现相同的
id值?
标签: mysql join left-join inner-join