2012-07-17 50 views
-1
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,rate,數量和日期。查詢兩個日期

我想在兩個日期之間顯示記錄。
我的查詢與兩條記錄匹配。但是當我添加「AND product.pid = stock.pid」時,它只顯示1條記錄。
我想從庫存表的pid方面的產品表中顯示產品名稱。

+1

左連接? SELECT product.pname,stock.pid,stock.qty,stock.rate FROM產品LEFT JOIN股票ON product.pid = stock.pid WHERE(日期'2012-04-10'和'2012-07-16')AND product.pid = stock.pid – mask8 2012-07-17 17:36:04

+0

更好地書寫您的文字描述。 – 2012-07-17 17:38:14

回答

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,這意味着如果有或者也沒有股票收益型產品不管,我覺得這個查詢,你會得到兩行。

+0

丹尼爾·阿蘭加:我想你會發現WHERE子句仍然會使它等價於RIGHT JOIN – 2012-07-17 17:54:12

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' 

如果找不到產品,產品名稱將爲空。

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 
0

你的選擇標準 WHERE([股票]日之間 '2012-04-10' 和 '2012-07-16') 使得有效RIGHT JOIN,只有那些記錄/內有現貨日期範圍將被顯示。如果您想要顯示所有產品而不考慮庫存,則需要將OR [庫存]日期IS NULL添加到您的選擇標準。