3

mysql を使用するのは初めてで、助けが必要です。おそらく簡単すぎるか、まだ適切に調べるには初心者すぎるため、これに対する解決策を見つけることができませんでした。

テスト データベースの複数のテーブルからクエリを作成したいと考えています。テーブルが次のようなものだとしましょう:

カテゴリ (*id_category、*id_product)

製品 (*id_product、id_category、id_supplier、id_manufacturer)

メーカー (*id_manufacturer, name)

サプライヤー (*id_supplier, name)

* が付いている列は、auto_increment (1 から開始) で null でない整数の主キーです。他の id 列は整数の外部キー (デフォルトは null) です。

製品テーブルの id_manufacturer や id_supplier が null の行も含むクエリが必要です。製品テーブルのこれらの空のフィールドは値「0」を返すため、次のようなクエリを作成すると

SELECT category.id_product, manufacturer.name, supplier.name 
FROM category, product, manufacturer, supplier 
WHERE category.id_category = product.id_category AND manufacturer.id_manufacturer = product.id_manufacturer AND supplier.id_supplier = product.id_supplier;

null 値 (0) を持つ行は表示されません。テーブルのプロパティを変更せずに行うための最もクリーンで効率的な方法を教えてください。どんな助けでも大歓迎です。

4

1 に答える 1

5

次に、Left Join を使用する必要があります。

SELECT category.id_product, manufacturer.name, supplier.name, P.ID_PRODUCT
FROM product
LEFT JOIN category C
ON C.id_category = P.id_category
LEFT JOIN manufacturer M
ON M.id_manufacturer = P.id_manufacturer 
LEFT JOIN supplier S
ON S.id_supplier = P.id_supplier;

これらは、他のテーブルからの対応する行がない場合でも、製品テーブルのすべての行を提供します。

于 2013-04-03T17:02:35.867 に答える