从表1到表2连接2列

时间:2009-01-13 00:48:00

标签: mysql join left-join

如何将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”

4 个答案:

答案 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