2016-12-05 118 views
0

我的sql查询只返回属于数据库中第一个客户的订单的结果。我哪里错了?SQL查询只返回第一个客户的结果

SELECT orders.id, 
     orders.created_at, 
     orders.customer_id, 
     customers.firstname, 
     customers.surname, 
     customers.email, 
     customers.telephone, 
     customer_addresses.address_1, 
     customer_addresses.address_2, 
     customer_addresses.address_2, 
     customer_addresses.city, 
     customer_addresses.county, 
     customer_addresses.post_code 
FROM orders 
INNER JOIN customers ON orders.customer_id = customers.id 
INNER JOIN customer_addresses ON customers.id = customer_addresses.id 
ORDER BY orders.id 
LIMIT 0, 10; 
+1

做其他的客户有地址吗? – Vatev

+0

@Vatev客户有一个必需的address_id字段 – Jack

回答

1

,如果你在你的答复中提到,以@ ceyquem的回答所有的客户都ADDRESS_ID,我认为你的加入customer_address表错误的列。它应该是

SELECT orders.id, 
     orders.created_at, 
     orders.customer_id, 
     customers.firstname, 
     customers.surname, 
     customers.email, 
     customers.telephone, 
     customer_addresses.address_1, 
     customer_addresses.address_2, 
     customer_addresses.address_2, 
     customer_addresses.city, 
     customer_addresses.county, 
     customer_addresses.post_code 
FROM orders 
INNER JOIN customers ON orders.customer_id = customers.id 
INNER JOIN customer_addresses ON customers.address_id = customer_addresses.id 
ORDER BY orders.id 
LIMIT 0, 10; 

希望工程

+0

作品非常魅力,谢谢! – Jack

+0

我的荣幸。 :) –

3

如果所有的客户没有一个定义的地址,它可能是这个原因,请尝试更改JOIN操作符如下测试。此外,在年底取消该限制条件,以确保您可以看到所有的结果:

SELECT orders.id, 
     orders.created_at, 
     orders.customer_id, 
     customers.firstname, 
     customers.surname, 
     customers.email, 
     customers.telephone, 
     customer_addresses.address_1, 
     customer_addresses.address_2, 
     customer_addresses.address_2, 
     customer_addresses.city, 
     customer_addresses.county, 
     customer_addresses.post_code 
FROM orders 
LEFT JOIN customers ON orders.customer_id = customers.id 
LEFT JOIN customer_addresses ON customers.id = customer_addresses.id 
ORDER BY orders.id; 
+0

嗨感谢您的答复,所有的客户都有一个address_id。 – Jack

+0

查询是否建议使用LEFT JOIN工作呢? – ceyquem

+0

是第二位顾客现在正在退货,但分配的地址未被识别和加入,即使它适用于第一位顾客。 – Jack