两个日期之间的查询


Query Between two date

SELECT product.pname,stock.pid,stock.qty,stock.rate
FROM product,stock
WHERE (date BETWEEN '2012-04-10' AND '2012-07-16') AND product.pid=stock.pid

这是我的sql查询,但问题是在执行此查询时,它的显示单个结果意味着我的产品表包含pid和pname,而库存表包含pid,费率,数量和日期。

我想显示两个日期之间的记录。
我的查询与两条记录匹配。但是当我添加"AND product.pid=stock.pid"时,它只显示 1 条记录。
我想在库存表的pid方面显示产品表中的产品名称。

可能某些产品不在库存中。另外,我建议您像这样执行JOIN:

SELECT product.pname,stock.pid,stock.qty,stock.rate
FROM product
LEFT JOIN
stock
ON product.pid=stock.pid
WHERE (date BETWEEN '2012-04-10' AND '2012-07-16')

我使用了 LEFT JOIN,这意味着无论是否有库存,都要返回产品,我认为通过此查询您将获得两行。

首先尝试让它在没有连接的情况下工作:

SELECT stock.pid, stock.qty, stock.rate
FROM stock
WHERE stock.date BETWEEN '2012-04-10' AND '2012-07-16'

如果可行,则使用外部联接向每行添加信息,而不删除任何行。

SELECT product.pname, stock.pid, stock.qty, stock.rate
FROM stock
LEFT JOIN product ON product.pid=stock.pid
WHERE stock.date BETWEEN '2012-04-10' AND '2012-07-16'

如果未找到产品,则产品名称将为 NULL。

尝试以下查询。

SELECT product.pname,stock.pid,stock.qty,stock.rate
FROM product,stock
WHERE stock.date BETWEEN '2012-04-10' AND '2012-07-16' AND product.pid=stock.pid

您的选择标准其中([股票。日期介于"2012-04-10"和"2012-07-16"之间(使其有效地正确加入,仅显示日期范围内有/有库存的记录。如果您想显示所有产品而不考虑库存,则需要添加 OR [库存]。日期对于您的选择标准为空。