2

您如何将 table1 列引用到表 2 中的 2 列

我创建了一个包含 50 行的表“ State ”

试图在“婚礼”表中关联 (weddingState,contactState)

这是我创建的语句,但它只正确加入了顶部的WeddingState - 似乎并不关心它下面的 INNER Join ......

选择 *

从婚礼

INNER JOIN 状态为 s1 ON 婚礼。WeddingState = s1.StateId //婚姻状态

INNER JOIN 状态为 s2 ON weddings.ContactState = s2.StateId //新娘的联系状态

WHERE 婚礼.weddingid="094829292"

4

4 回答 4

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”。如果不对这些列进行别名处理,则总是会覆盖另一列。

于 2009-01-13T01:01:38.543 回答
0

你从结果中得到了什么来得出你的结论?

初学者会感到困惑,因为两个连接中的字段名称以及主表中的一些字段名称是相同的。显式选择输出列并为它们提供有意义的别名是一个非常好的主意。

于 2009-01-13T01:01:55.327 回答
0

怎么样:

选择 s1.StateName,s2.StateName

从婚礼

INNER JOIN 状态为 s1 ON weddings.WeddingState = s1.StateId //婚姻状态

INNER JOIN 状态为 s2 ON weddings.ContactState = s2.StateId //新娘的联系状态

WHERE 婚礼.weddingid="094829292"

于 2009-01-13T01:03:43.327 回答
0

谢谢比尔,我也添加了州名

选择 w.*,

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

于 2009-01-13T02:27:28.650 回答