2016-03-08 46 views
0

我的表:MySQL的内部三个表之间的连接语法

mysql> select * from pvf_order; 
+------+------------+------+ 
| oid | orderdate | cid | 
+------+------------+------+ 
| 1001 | 2014-02-10 | 1 | 

10 rows in set (0.00 sec) 

mysql> select * from pvf_order_item; 
+------+-----+----------+ 
| oid | pid | quantity | 
+------+-----+----------+ 
| 1001 | 1 |  2 | 

18 rows in set (0.00 sec) 

mysql> select * from pvf_product; 
+-----+----------------------+----------------+--------+--------------+ 
| pid | prod_desc   | Prod_finish | price | prod_line_id | 
+-----+----------------------+----------------+--------+--------------+ 
| 1 | End Table   | Cherry   | 175.00 |   1 | 

8 rows in set (0.01 sec) 

的现在我的查询变化:

SELECT 
pvf_order.cid, 
pvf_order.orderdate, 
pvf_product.prod_desc, 
pvf_order_item.quantity, 
pvf_product.price 
FROM pvf_order 
INNER JOIN pvf_order.oid=pvf_order_item.oid 
INNER JOIN pvf_order_item.pid=pvf_product.pid 
WHERE YEAR(pvf_order.orderdate)=2014 AND MONTH(pvf_order.orderdate)=10; 

我只是不知道到底我要去哪里错了。我编辑了一些信息,以避免大量文字,但我希望总体思路在那里。任何帮助表示赞赏!

+0

你需要有这些变化:'INNER JOIN pvf_order_item ON pvf_order.oid = pvf_order_item.oid'和'INNER JOIN pvf_product ON pvf_order_item.pid = pvf_product.pid' – 1000111

+0

它应该是'INNER JOIN pvf_order_item ON pvf_order .oid = pvf_order_item.oid INNER JOIN pvf_product ON pvf_order_item.pid = pvf_product.pid'您需要提及要连接的表格,而不仅仅是要匹配的字段。 –

+0

真棒谢谢! – Burninrock24

回答

0

检查JOIN sintaxis,还使用ALIAS的表名

SELECT 
    o.cid, 
    o.orderdate, 
    p.prod_desc, 
    oi.quantity, 
    p.price 
FROM pvf_order o 
INNER JOIN pvf_order_item oi 
     ON o.oid = oi.oid 
INNER JOIN pvf_product p 
     ON pvf_o.pid = p.pid 
WHERE YEAR(o.orderdate) = 2014 AND MONTH(o.orderdate) = 10; 

而且改用年和月功能,可以简化为一个单一的比较讨论操作。

WHERE date_format(o.orderdate, '%Y-%m') = '2014-10'