我有两个包含动态数据的表,它们都引用第三个静态表作为描述。想象一下这种情况:
Cake Table
Sponge Table
Description Table
海绵是一种蛋糕。海绵的每个实例都属于蛋糕的一个实例。基本上,Sponge有一个与之关联的Cake ID。
蛋糕的基本描述符合蛋糕的风格。这是一个简单的编号索引。即。蛋糕描述可能是25,而后者在描述表中等于“Soft,but Squeezable”。
Cake Table Rows有一个描述的索引。同样,Sponge也有它的描述索引 - 即使它与蛋糕的描述相同。
海绵属于描述ID 25的蛋糕 - 蛋糕是“柔软但又可挤压”;但海绵也有它自己的描述索引10 - “Almondy少咬一口!”。
我的问题是,如何从第三张表中提取两个描述?它可能很简单,但我已经在努力研究这个问题
到目前为止:
SELECT
cakes.*,
sponges.*,
descriptions.description as cake_description,
descriptions.description as sponge_description
from sponges
join cakes on cake_id = sponge_id
join descriptions on cake_desc_id = description_id
以上内容在两个描述字段中都复制了Sponge Description。基本上,我希望能够同时拉出Cake Description和Sponge Description。
提前感谢您提供任何帮助
答案 0 :(得分:5)
描述中的自我联接可以满足您的需求。如果有记录有一种描述,而不是另一种描述,则需要将其更改为左连接。
SELECT
cakes.*,
sponges.*,
cake_description.description as cake_description,
sponge_description.description as sponge_description
from sponges
join cakes on cake_id = sponge_id
join descriptions cake_description on cake_description.cake_desc_id = description_id
join descriptions sponge_description on sponge_description.cake_desc_id = description_id