2017-05-17 31 views
0

在庫テーブルのすべての行を部品表の説明とともに出力しようとしています。ここではテーブルです:私が欲しいものmySQLクエリLEFT OUTER JOINがnullを表示しない

在庫表

Inventory Table

部品表

enter image description here

は持っている在庫行からのSKUのすべての出力すべてを持っていることですその次のSKUの説明を含む特定のorderNumber。インベントリSKUがパートSKUと一致しない場合は、説明をNULLとして出力します。ここで

は私の既存のクエリです:

SELECT * FROM inventory LEFT OUTER JOIN parts ON inventory.sku = parts.sku AND parts.description IS NULL WHERE orderID = $orderID 

助けてください。右側のテーブルの上の行のどれに参加しないながら

より良いあなたの要件を読んで編集

そのフィールド

SELECT * 
FROM inventory 
LEFT OUTER JOIN 
     parts 
ON  inventory.sku = parts.sku 
WHERE orderID = $orderID AND 
     parts.description IS NULL 

nullを持っているので、

+0

その条件を取り除くことができますが、二つの問題のいずれかを持っていると言う:1)1でのSKUやテーブルの両方には、レコードが発生しない非表示文字を持っています合わせる。 2)渡された$ orderIDはレコードと一致しません。レコードを取得しない場合は、where句を使用してクエリを実行します。レコードが返されない場合、処理する必要があるSKUに非表示文字があります。スペースを削除するためにレコードをトリミングすることはできますか?あなたがレコードを取得した場合、あなたが渡している$ OrderIDは無効です。 Likley 2ndは、少なくとも、在庫を返す必要があります。 – xQbert

答えて

1

あなたは、あなたのwhere句にparts.description IS NULL条件を移動する必要があります右側のテーブルに一致するかどうかに関係なく、左側のテーブルからすべての行が必要なようです。そのような場合、あなたはIDを提供した情報に基づいてまとめて

SELECT * 
FROM inventory 
LEFT OUTER JOIN 
     parts 
ON  inventory.sku = parts.sku 
WHERE orderID = $orderID 
+0

が動作しませんでした。それは何も戻さなかった。 – ggntc

+0

2番目のバージョンも試しましたか? –

+0

それは私の最初の試みでした。私が持っているのは、SKU 11111の行だけでした。これは、SKUの記述がある唯一のエントリであるためです。 INNER JOINのようなもの。 – ggntc

関連する問題