MySQL - 复杂的LEFT JOIN

时间:2011-09-22 18:16:37

标签: mysql left-join

我有这种一对多的关系。另外,并非所有“主要”记录都会在第二个数据库表中具有连接记录。

以下是我的表格:

tbl_customers tbl_addresses

tbl_customers中的客户记录显然可以在tbl_addresses表格中包含多个地址。

这是我的困境。有许多客户记录有多个地址,我将其中一个地址记录指定为客户记录的“主要”地址。这只是一个名为column的{​​{1}}。如果该地址记录是主要地址,则该值将为数字1。

所以这是我的问题:

primaryAddress

该查询将导致具有多个地址的任何客户的重复记录。 如果我再向LEFT JOIN添加一点:

SELECT c.customername, a.state 
FROM `tbl_customers` c
LEFT JOIN `tbl_addresses` a ON c.customerid = a.customerid

这不会产生任何结果,即使我在数据库中看到有大量的地址记录,其中primaryAddress = 1。

所以我认为我的查询错了。

有人能看到我错过的东西吗?

1 个答案:

答案 0 :(得分:0)

对于碰巧登陆此页面寻找解决方案的任何人:

  

这不能正确回答问题

用户在此处讨论问题后能够找到原因。事实证明他的原始代码有错字。 在问题上发布的第二个SQL代码块是正确的,应该给出预期的结果。用户JoeStefanelli为此指出了+1。

请阅读评论以获取详细信息。我原来的答案如下。现在我看到我应该删除它,而不是试图修改它,一旦我意识到它有缺陷。至少讨论帮助用户找到了解决方案......


我原来的回答:

  

你快到了。将a.primaryAddress = 1添加到WHERE子句中。

     

修改

     

不确定这是否会排除结果中地址为零的客户...