如何将table1列引用到表2中的2列
我创建了一个包含50个确切行
的表'状态'尝试在'婚礼'表中关联(weddingState,contactState)
这是我创建的声明,但它只能正确加入顶部 WeddingState - 似乎不关心它下方的INNER加入......
SELECT *
来自婚礼
INNER JOIN在婚礼上声明为s1。 WeddingState = s1.StateId //婚姻状态
INNER JOIN声明s2 ON weddings.ContactState = s2.StateId //接触新娘状态
WHERE weddings.weddingid =“094829292”
答案 0 :(得分:3)
我猜你是用PHP或其他东西检索它们,并且你在哈希数组中获取行,由字段名称键入。当然,在给定键的散列中只能有一个元素。因此,您需要使用列别名来确保具有相同名称的列具有不同的别名。
SELECT w.*, s1.StateID AS wstate, s2.StateId AS cstate
FROM weddings AS w
INNER JOIN states AS s1 ON w.WeddingState = s1.StateId //state of marriage
INNER JOIN states AS s2 ON w.ContactState = s2.StateId //contact state of bride
WHERE w.weddingid="094829292";
现在你的哈希数组将包含键“wstate”和“cstate”。如果不对这些列进行别名,则会始终覆盖另一列。
答案 1 :(得分:0)
你得到的结果是什么导致你得出结论?
这对初学者来说会让人感到困惑,因为两个联接中的字段名称加上主表中的一些字段名称是相同的。明确选择输出列并为它们提供有意义的别名是一个非常好的主意。
答案 2 :(得分:0)
怎么样:
SELECT s1.StateName,s2.StateName
来自婚礼
INNER JOIN在婚礼上表示为s1。婚礼状态= s1.StateId //结婚状态
INNER JOIN声明s2 ON weddings.ContactState = s2.StateId //接触新娘状态
WHERE weddings.weddingid =“094829292”
答案 3 :(得分:0)
谢谢Bill,我还添加了StateName
SELECT w。*,
s1.StateId AS WeddingStateId,
s1.StateName AS WeddingStateName,
s2.StateId AS ContactStateId,
s2.StateName AS ContactStateName
来自婚礼AS w
INNER JOIN表示AS s1 ON w.WeddingState = s1.StateId
INNER JOIN表示AS s2 ON w.ContactState = s2.StateId