mysql - 选择语句格式
问题描述
我正在尝试匹配两个表中的数据。一个是带有日期的发票表,其中包含物品出库和返回的日期。另一个是行项目表,其中包含发票上的每个项目。两个表都有共同的 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 语句中遗漏了什么?
解决方案
使用时JOIN
,始终使用语法ON
的或USING (fields, ...)
部分。
在这种情况下,两个表中的字段名称是相同的invoice_number
,因此USING (invoice_number)
是适当的语法。
如果他们ON invoices.ID = line_item.invoice_number
可以使用不同的名称语法。
可以使用多个条件,因此可以以某些方式使用WHERE
条件,例如 SQL 的条件。
推荐阅读
- python - 如何使用列表解包将格式化字符串转换为 f 字符串?
- django - Django:视图的媒体?
- php - AWS EB - 如何从 PHP 5.6 更改为 7.X?
- html - 背景样式
- python - 如何在 python 脚本上执行代码签名?
- javascript - 如何将相同的项目插入嵌套数组
- javascript - 如何从 API 调用附加到 WordPress 定制器中的选择框?
- windows - 无法使用来自 Windows 命令提示符的 URL 访问本地目录
- php - Wordpress 主题更新 - 如何不丢失对父主题的自定义?
- python-3.x - 如何连接每个组的连续行并将它们作为数据框中的列并计算每个组的出现次数?