-1

クエリのヘルプが必要です:

SELECT 
P.ID,
P.CategoryID,
P.Name,
P.SupplierID,
p.UnitPrice,
p.UnitsInStock,
pp.PicturePath
FROM Products P JOIN ProductPhoto PP ON p.ID=PP.ProductID   WHERE P.CategoryID='2';

このクエリでは 2 つの結果が返されますが、4 つのデータがあるため、4 つの結果が返される必要があります。categoryID='2'

また、このクエリから確認したところ、次の4つのデータがありますcategoryID='2'

 select * from Products;
4

3 に答える 3

2

あなたが欲しいでしょうLEFT JOIN

SELECT  P.ID,
  P.CategoryID,
  P.Name,
  P.SupplierID,
  p.UnitPrice,
  p.UnitsInStock,
  pp.PicturePath
FROM Products P 
LEFT JOIN ProductPhoto PP 
  ON p.ID=PP.ProductID  
WHERE P.CategoryID='2'

テーブルに一致する行がない場合でも、ALEFT JOINはすべてを返します。は、両方のテーブルで一致する行のみを返します。ProductsProductPhotoINNER JOIN

JOIN構文を学習するのに助けが必要な場合は、ここに結合の優れた視覚的説明があります

于 2013-02-03T23:20:27.437 に答える
0

Products 内の ID に等しい ProductID で ProductPhoto に INNER JOIN を実行していることに注意してください。

両方のテーブルに、categoryID が 2 の一致する行が 2 つしかない場合は、それだけが返されます。

クエリを LEFT JOIN に変更し、4 行が返されるかどうかを確認します。そうであれば、上記のクエリは正しいです。

于 2013-02-03T23:23:45.703 に答える
0
SELECT 
P.ID,
P.CategoryID,
P.Name,
P.SupplierID,
p.UnitPrice,
p.UnitsInStock,
pp.PicturePath
FROM Products P LEFT JOIN ProductPhoto PP ON p.ID=PP.ProductID   WHERE P.CategoryID='2'

左結合を使用してみてください。製品に一致する製品写真レコードがない可能性があります。

于 2013-02-03T23:21:49.517 に答える