sql - 具有不同行名的 SQL INNER JOIN 表
问题描述
感谢您花时间阅读本文,这可能是一个非常基本的问题。我所做的大多数搜索查询对操作员来说似乎更深入一些INNER JOIN
。
基本上我的问题是这样的:我有一张发货和收货表,上面有发货或收货的日期。在运输表 ( tbl_shipping
) 中,日期行标记为 trans_out_date,对于接收表 ( tbl_receiving
),日期行标记为trans_in_date
。
我可以从用户输入的表单中查看在任一表上设置的事务,但我想使用从满足条件的两个表中提取的信息填充一个表。IE。如果接收表在 4 月完成了 10 笔交易,在 6 月完成了 5 笔交易,而发货表在 4 月完成了 15 笔交易,在 6 月完成了 10 笔交易……当用户想要查看 6 月的所有交易时,它将填充发生在 6 月的 15 笔交易六月。
截至目前,我只能从一张桌子上拉
SELECT *
FROM tbl_shipping
WHERE trans_out_date >= ‘from_date’
AND trans_out_date <= ‘to_date’
这是否是我想要实现的适当语法?
SELECT *
FROM tbl_shipping
INNER JOIN tbl_receiving ON tbl_shipping.trans_out_date = tbl_receiving.trans_in_date
WHERE
tbl_shipping.trans_out_date >= ‘from_date’
AND tbl_shipping.trans_out_date <= ‘to_date’
再次感谢您阅读本文。
解决方案
您似乎想要union all
而不是join
:
SELECT s.item, s.trans_out_date as dte, 'shipped' as which
FROM tbl_shipping S
WHERE s.trans_out_date >= ? AND
s.trans_out_date <= ?
UNION ALL
SELECT r.item, NULL, r.trans_in_date as dte, 'received'
FROM tbl_receiving r
WHERE r.trans_out_date >= ? AND
r.trans_out_date <= ?
ORDER BY dte;
笔记:
- A
JOIN
可能由于数据丢失(因为日期不对齐)或数据重复(因为有多个日期)而导致问题。 - 是
?
一个参数。如果您从应用程序调用它,请使用参数! - 您可以在结果集中包含其他列以获取更多信息。
这可能不是您想要的确切结果格式。如果不是,请使用样本数据和所需结果提出另一个问题。
推荐阅读
- python - Keras(Tensorflow)创建错误的张量形状(特征,特征)导致OOM内存错误
- c# - How do compare multiple PDF files and get the PDF with the least number of pages in C#?
- twitter-bootstrap - Using thymeleaf value in bootstrap alert
- java - 批量更新列表,然后重新加入
- django - Why do I get this error while running django project even after adding mysql to settings?
- powershell - 确定与 PSFTP 的 SFTP 连接是成功还是失败
- amazon-web-services - 如何使用 aws 每天复制生产数据库
- android - 解析 LiveQuery 未订阅 - Android (Kotlin)
- python - Python 列表到 BigQuery 重复字符串
- java - Java Future:如何在执行 Aysnc 调用时解除对主线程的阻塞