0

次の構造を持つ 2 つの MySQL テーブルがあります。

TABLE `orders`

order_id
order_date
product_id

TABLE `products`

product_id
product_name
product_price
product_type

テーブル orders のすべての行を表示したいのですが、TABLE products に product_id がある場合、その製品のすべてのデータが表示されます。ない場合は、orders テーブルのすべてのデータのみを表示します。

私はこれを試しました:

SELECT * FROM orders AS o RIGHT JOIN products AS p ON o.product_id=p.product_id

しかし、products テーブルに存在しない、orders テーブル内の product_id を持つ行がある場合、orders からの行は表示されません。products テーブル内に product_id があるかどうかに関係なく、注文 ID の行が表示されるようにします。JOIN がある場合、そうでない場合は、テーブル注文からのデータのみを表示します。

助言がありますか?

4

1 に答える 1

2

あなたがしている必要がありますLEFT JOIN

左結合では、からのすべてのORDERS が返されます。の基準が満たされていない場合は、products表の列が表示されます。nulljoin

SELECT    o.*,p.* 
FROM      orders AS o 
LEFT JOIN products AS p 
       ON o.product_id=p.product_id`

MySQL 手動結合構文を参照してください

于 2013-08-05T12:56:09.833 に答える