两个日期之间的查询

时间:2012-07-17 17:33:55

标签: php mysql 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,而stock表包含pid,rate,qty和date。

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

4 个答案:

答案 0 :(得分:0)

可能有些产品不在库存中。另外我建议你像这样做一个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意味着无论是否拥有库存都会返回产品,我认为通过此查询您将获得两行。

答案 1 :(得分:0)

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

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。

答案 2 :(得分:0)

尝试以下查询。

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

答案 3 :(得分:0)

您的选择标准 在哪里([股票]]约会'2012-04-10'和'2012-07-16') 使其有效地加入,只显示日期范围内有/库存的记录。如果您想显示所有产品而不管库存多少,您需要添加OR [stock。] date is NULL到您的选择标准。