2016-06-01 5 views
0

次のように私は、リレーショナルスキーマを持っている:2つのグループの内容をSQLの値に基づいてどのように分類できますか?

INVENTORY(inventoryID,title,wholesale,markup,qtyinStock,discount) 
Primary-Key: inventoryID 

BOOK(coverType,inventoryID) 
Primary-Key: inventoryID 
Foreign-Key: inventoryID 

DVD(classification,ReleaseYear,StarRating) 
Primary-Key: inventoryID 
Foreign-Key: inventoryID 

BOOKとDVDは基本的に在庫のサブタイプです。彼らはINVENTORYから継承しています。今、テーブルのアイテムの存在に応じて、書籍またはDVDのいずれかのアイテムとして、すべてのアイテムを在庫に表示したいと考えています。私は、次のことをやったが、これが正しいかどうかはわからない:

SELECT title FROM INVENTORY,BOOK,DVD 
WHERE INVENTORY.inventoryID = BOOK.inventoryID AND INVENTORY.inventoryID = DVD.inventoryID 

これはしかし項目のタイトルを表示しません。それをどのように追加できますか?ありがとう!

答えて

0

WHERE句にANDを入力すると、書籍とDVDの両方のインベントリアイテムのタイトルを取得しようとしています。 ANDORを変更してみてください

+0

したがって、在庫のアイテムが書籍であるかDVDであるかを表示したいとします。あなたの提案はタイトルを表示するだけだと思います。それでおしまい。カテゴリも表示したい(DVD/Book)。 –

1

質問が間違って表示されない限り、クエリは簡単です。あなたのサンプルクエリは、DVDとブックの両方のインベントリを取得します。

SELECT title, 
CASE WHEN b.inventoryID IS NOT NULL THEN 'Book' 
    WHEN d.inventoryID IS NOT NULL THEN 'DVD' 
END AS Category 
FROM Inventory i 
JOIN Book b on i.inventoryID = b.inventoryID 
JOIN DVD d on d.inventoryID = i.InventoryID 
+0

ですから、在庫内のアイテムが書籍であるかDVDであるかを表示します。私はあなたのクエリはタイトルを表示すると思う。それでおしまい。カテゴリも表示したい(DVD/Book)。 –

+0

@ハリールイス私は答えを更新しました。私はあなたが元の例で引っ張っていたものなので、タイトルを引いただけです。 – SQLChao

関連する問題