首页 > 解决方案 > 选择语句格式

问题描述

我正在尝试匹配两个表中的数据。一个是带有日期的发票表,其中包含物品出库和返回的日期。另一个是行项目表,其中包含发票上的每个项目。两个表都有共同的 invoice_number 列。

我所做的 SELECT 语句是:

SELECT line_items.invoice_number,date_out,date_due_in,equipment_qty,line_items.equipment_id FROM invoices join line_items
group by sequence;

一些输出的例子是:

invoice_number, date_out, date_due_in, equipment_qty, equipment_id
1   2017-01-06  2017-01-13  3   2
1   2017-01-06  2017-01-13  2   3
2   2017-01-06  2017-01-13  5   2
3   2017-01-06  2017-01-13  1   2
3   2017-01-06  2017-01-13  1   5

问题在于它将第一个项目的日期放在所有项目上。

这是它从中提取的表的示例:

发票:

invoice_number, invoice_date, customer_id,  equipment_total, date_out, date_due_in
1   2017-01-06  1   5   2017-01-06  2017-01-13
2   2017-01-08  2   4   2017-01-17  2017-01-19
3   2017-01-16  2   2   2017-01-16  2017-01-18

订单项:

Sequence, invoice_number, equipment_id, equipment_qty
1   1   2   3
2   1   3   2
3   2   2   5
4   3   2   1

我从 SELECT 语句中遗漏了什么?

标签: mysql

解决方案


使用时JOIN,始终使用语法ON的或USING (fields, ...)部分。

在这种情况下,两个表中的字段名称是相同的invoice_number,因此USING (invoice_number)是适当的语法。

如果他们ON invoices.ID = line_item.invoice_number可以使用不同的名称语法。

可以使用多个条件,因此可以以某些方式使用WHERE条件,例如 SQL 的条件。


推荐阅读