SQL 具有不同行名称的 INNER JOIN 表
SQL INNER JOIN tables with different row names
感谢您花时间阅读本文,这可能是一个非常基本的问题。对于 INNER JOIN
运算符,我所做的大多数搜索查询似乎更深入一些。
基本上我的问题是:我有一个发货和收货 table,其中包含发货或收货的日期。在发货 table (tbl_shipping
) 中,日期行标记为 trans_out_date,对于接收 table (tbl_receiving
),日期行标记为 trans_in_date
。
我可以从用户输入的表单中查看在任一 table 上设置的交易,但我想用从满足条件的两个 table 中提取的信息填充 table。 IE。如果收货 table 在 4 月份完成了 10 笔交易,在 6 月份完成了 5 笔交易,而发货 table 在 4 月份完成了 15 笔交易,在 6 月份完成了 10 笔交易...当用户想要查看 6 月份的所有交易时,它将填充 6 月发生的 15 笔交易。
截至目前,我只能从 1 table 中提取
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;
备注:
JOIN
可能会由于数据丢失(因为日期不对齐)或数据重复(因为有多个日期)而导致问题。
?
是一个参数。如果您从应用程序调用它,请使用参数!
- 您可以在结果集中包含更多列以获取更多信息。
这可能不是您想要的准确结果格式。如果不是,请使用示例数据和所需结果提出另一个问题。
感谢您花时间阅读本文,这可能是一个非常基本的问题。对于 INNER JOIN
运算符,我所做的大多数搜索查询似乎更深入一些。
基本上我的问题是:我有一个发货和收货 table,其中包含发货或收货的日期。在发货 table (tbl_shipping
) 中,日期行标记为 trans_out_date,对于接收 table (tbl_receiving
),日期行标记为 trans_in_date
。
我可以从用户输入的表单中查看在任一 table 上设置的交易,但我想用从满足条件的两个 table 中提取的信息填充 table。 IE。如果收货 table 在 4 月份完成了 10 笔交易,在 6 月份完成了 5 笔交易,而发货 table 在 4 月份完成了 15 笔交易,在 6 月份完成了 10 笔交易...当用户想要查看 6 月份的所有交易时,它将填充 6 月发生的 15 笔交易。
截至目前,我只能从 1 table 中提取
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;
备注:
JOIN
可能会由于数据丢失(因为日期不对齐)或数据重复(因为有多个日期)而导致问题。?
是一个参数。如果您从应用程序调用它,请使用参数!- 您可以在结果集中包含更多列以获取更多信息。
这可能不是您想要的准确结果格式。如果不是,请使用示例数据和所需结果提出另一个问题。