题
如何参考表1的列,以两列在表2中
我创建的表 '的国家强>' 50级确切的行
试图涉及(weddingState,contactState)在 '的婚礼强>' 表
这是我创建的语句,但它只是将顶端的 WeddingState 正确的 - 似乎不关心INNER JOIN它下面...
SELECT *
从婚礼
INNER JOIN状态为S1 ON婚礼。的 WeddingState 强>婚姻= s1.StateId //状态
INNER JOIN状态如新娘的S2接通weddings.ContactState = s2.StateId //接触状态
WHERE weddings.weddingid = “094829292”
解决方案
我猜你在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”。无混叠这些列,一个将总是覆盖其他
其他提示
和你有什么让你的结果,导致你对你的结论是什么?
这将是混乱对于初学者,因为在这两个字段名称加入,再加上一些在主表中的字段名的,是相同的。这真是一个好主意,明确地选择你的输出列,并给他们有意义的别名。
如何:
选择s1.StateName,s2.StateName
从婚礼
INNER JOIN状态为S1 ON weddings.WeddingState = s1.StateId //婚姻状态
INNER JOIN状态如新娘的S2接通weddings.ContactState = s2.StateId //接触状态
WHERE weddings.weddingid = “094829292”
感谢比尔,我添加了Statename的以及
选择瓦特*,
s1.StateId AS WeddingStateId,
s1.StateName AS WeddingStateName,
s2.StateId AS ContactStateId,
s2.StateName AS ContactStateName
从婚礼为W
INNER JOIN状态为S1 ON w.WeddingState = s1.StateId
INNER JOIN状态为S2 ON w.ContactState = s2.StateId