【问题标题】:joining 2 columns from Table1 to Table 2将表 1 中的 2 列连接到表 2
【发布时间】:2009-01-13 00:47:59
【问题描述】:

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

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

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

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

选择 *

来自婚礼

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

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

WHERE 婚礼.weddingid="094829292"

【问题讨论】:

  • 嗯?刚刚发生了什么?

标签: mysql join left-join


【解决方案1】:

我猜你正在用 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”。如果不对这些列进行别名处理,一个总是会覆盖另一个。

【讨论】:

  • 感谢Bill 的帮助...我实际上是在ColdFusion/MySQL 中编写代码,而且几乎没有支持。因为我也需要知道州名,所以我这样做了:
  • SELECT w.*, s1.StateId AS WeddingStateId, s1.StateName AS WeddingStateName, s2.StateId AS ContactStateId, s2.StateName AS ContactStateName FROM 婚礼 AS w INNER JOIN states AS s1 ON w.WeddingState = s1.StateId INNER JOIN 状态为 s2 ON w.ContactState = s2.StateId
【解决方案2】:

你的结果是什么?

这会让初学者感到困惑,因为两个连接中的字段名称以及主表中的一些字段名称是相同的。明确选择输出列并为其赋予有意义的别名是一个非常好的主意。

【讨论】:

  • 感谢您的注意 - 我已将您所说的内容落实到声明中。感谢您的回复
【解决方案3】:

怎么样:

选择 s1.StateName, s2.StateName

来自婚礼

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

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

WHERE 婚礼.weddingid="094829292"

【讨论】:

  • 感谢您的回复 - 我试过了但没有成功 - 谢谢 Scotty
【解决方案4】:

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

选择 w.*,

s1.StateId AS WeddingStateId,

s1.StateName AS WeddingStateName,

s2.StateId AS ContactStateId,

s2.StateName AS ContactStateName

从婚礼开始

INNER JOIN 状态为 s1 ON w.WeddingState = s1.StateId

INNER JOIN 状态为 s2 ON w.ContactState = s2.StateId

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 2017-11-20
    • 2011-08-06
    • 2016-03-03
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多