Create view getProducts_v as (
SELECT *
FROM Product
WHERE Active = 'Y' and OnHandQty>0);
SELECT *
FROM GetProducts_v P
INNER JOIN ProductCategory PC
on PC.ProductID = P.ID
WHERE PC.Name in ('Houseware','Kitchen')
ビューgetProducts_vのみがアクティブであり、可用性が存在するアイテムのリストを提供します。
このクエリは、ビューを使用して、家庭用キッチン内の製品のみのリストを取得します。ビューは既に非アクティブなものと0のonHandQtyのものを除外しているため、私たちはユーザーが私たちにインアクティブとアクティブを持っているものだけを表示します。
あなたが持っているもの撮影:
CREATE view GetOrderHeader_v as (
SELECT custorderid, custID, customerorder.dateorderplaced
FROM CustomerOrder
);
SELECT COUNT(gOH.custorderID) AS NoOfOrders
, x.city ||' '|| EXTRACT(YEAR FROM TO_DATE(gOH.dateorderplaced, 'DD-MON-RR'))
FROM GetOrderHeader_v gOH
INNER JOIN Customer x
ON gOH.custID = x.custID
WHERE EXTRACT(MONTH FROM TO_DATE(gOH.dateorderplaced, 'DD-MON-RR')) =1
AND EXTRACT(YEAR FROM TO_DATE(gOH.dateorderplaced, 'DD-MON-RR')) = 2017
GROUP BY x.city ||' '|| EXTRACT(YEAR FROM TO_DATE(Y.dateorderplaced, 'DD-MON-RR'))
, gOH.dateOrderplaced;
ノートは、私はそれが不要なオーバーヘッドを追加すると、フィールドが既に日付データ型である場合は、上記のTO_DATEを使用することはありません。 dateorderplacedがまだ日付でない場合、私はテーブル構造にいくつか懸念があります。
通常、私は複雑なクエリでこのようなビューを使用するか、冗長チェックを排除するためにロジック内にテーブルを入れたいと思っていました。アクティブな製品のみを表示するなど、製品テーブルから製品を削除しないので、削除された製品や在庫切れの商品を表示しないGetProducts_vを参照するようにします。
抽出はOracleです。これは正しくタグ付けされていますか –
@ P.Salmon私の悪いサー – life
「ビューを関連として」とは何ですか?注:ビューは単にテーブルのように使用できます。 –