2015-06-20 40 views
0

我正在开发一个网站,其中有两个表。 订单托运人。 一个非常基本的结构如下,Mysql加入两个表获取相关数据

orders 
======= 
order_id 
shipper_id 
customer_id 
order_date 
order_item 

shipper 
========= 
shipper_id 
shipper_name 

我想列出所有订单连同它的发货人姓名。例如

order_id | customer_id | order_date | order_item | shipper_name 

现在托运人表中的订单表和3行(三个托运人)有2行(两个订单)。

当我运行下面的查询,但它显示重复的记录。即2次3次(2 * 3 = 6行)。为什么不只是2个订单和托运人信息?

SELECT * FROM orders o, shippers s ORDER BY order_date DESC 

注意:这个查询可以工作,但我不确定天气是否是标准的方法。

SELECT * FROM orders o, shippers s GROUP BY o.order_id ORDER BY order_date DESC 

我听说过表连接。这种情况下使用连接吗?我开发了许多动态网站,但这个问题真的让我困惑。

+0

ü没有联接发生。它无法读懂你的想法 – Drew

回答

1

加入可以在查询中使用如下:

select orders.order_id, orders.customer_id, orders.order_date, orders.order_item, shipper.shipper_name from orders left join shipper on orders.shipper_id=shipper.shipper_id; 

,或者你可以如下使用:

select o.order_id, o.customer_id, o.order_date, o.order_item, s.shipper_name from orders o left join shipper s on o.shipper_id=s.shipper_id; 
+0

别名可能有用 – Drew

+0

不错。结果如预期。我在编程但在菜单中选择:( –

+1

@SohanPatel:太好了,它帮助了你.. :)也接受我的答案。 – AnkiiG