我有这种一对多的关系。另外,并非所有“主要”记录都会在第二个数据库表中具有连接记录。
以下是我的表格:
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。
所以我认为我的查询错了。
有人能看到我错过的东西吗?
答案 0 :(得分:0)
对于碰巧登陆此页面寻找解决方案的任何人:
这不能正确回答问题
用户在此处讨论问题后能够找到原因。事实证明他的原始代码有错字。 在问题上发布的第二个SQL代码块是正确的,应该给出预期的结果。用户JoeStefanelli为此指出了+1。
请阅读评论以获取详细信息。我原来的答案如下。现在我看到我应该删除它,而不是试图修改它,一旦我意识到它有缺陷。至少讨论帮助用户找到了解决方案......
我原来的回答:
你快到了。将
a.primaryAddress = 1
添加到WHERE
子句中。修改强>
不确定这是否会排除结果中地址为零的客户...