在内部联接中使用where子句,但内部联接并没有选择我在查询中要求的内容。这里我只选择12个jun数据,而innerjoin查询也选择以前的日期数据。
查询是:
SELECT
p_sale_inv.datetime,
p_sale_inv.sale_inv,
p_sale_inv.Jobber,
p_sale_part.stock_id,
p_sale_part.quantity,
p_sale_part.netamount,
p_purch_stock.Price,
p_sale_part.sale_inv
FROM
p_sale_inv
INNER JOIN p_sale_part ON p_sale_inv.sale_inv = p_sale_part.sale_inv
INNER JOIN p_purch_stock ON p_sale_part.stock_id = p_purch_stock.stock_id
WHERE
DATE_FORMAT(p_sale_inv.datetime, '%Y-%m-%d') BETWEEN '2018-07-12' AND '2018-07-12'
问题是:为什么查询显示相同的日期?实际上,正如你在上表中看到的,它们是不同的。
1条答案
按热度按时间fxnxkyjh1#
查询将返回
p_sale_inv
表,连接到两行p_sale_part
table。这就是日期相同的原因:它们来自表的同一行。(请注意,只有一个
p_sale_inv
行的日期与where子句匹配。所以您不希望该表的两行都返回。)编辑:也许这有助于消除误解。以下是删除内部联接的同一查询:
您将只看到表中的一行,即日期为7-12的行。如果删除where子句,您将看到两行和两个日期。使您困惑的是与其他表的连接。我认为您的下一步是了解表联接是如何工作的。