-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 クエリですが、問題は、このクエリを実行すると、単一の結果が表示され、product テーブルに pid と pname が含まれ、stock テーブルに pid、rate、qty、および date が含まれていることです。

2 つの日付の間のレコードを表示したい。
私のクエリは 2 つのレコードと一致します。しかし、「AND product.pid=stock.pid」を追加すると、レコードは 1 つしか表示されません。
在庫テーブルのpidに関して、商品テーブルから商品名を表示したい。

4

4 に答える 4

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を使用しました。これは、在庫があるかどうかに関係なく商品を返品することを意味します。このクエリを使用すると、2つの行が取得されると思います。

于 2012-07-17T17:38:42.913 に答える
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になります。

于 2012-07-17T17:38:47.723 に答える
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
于 2012-07-17T17:41:23.753 に答える
0

選択基準 WHERE ([stock.]date BETWEEN '2012-04-10' AND '2012-07-16') により、効果的に RIGHT JOIN になり、日付範囲内に在庫がある/あったレコードのみが表示されます。在庫に関係なくすべての製品を表示する場合は、OR [stock.]date IS NULL を選択基準に追加する必要があります。

于 2012-07-17T17:51:52.903 に答える