mySQLの割り当ての場合、2014-01-01の間で注文されたデータベースのプリントのitem_id、title、artist、unit_price、およびorder_qtyを含むビューを作成しますおよび2014-03-28。オーダービューそこにはいけないアイテムを追加する
CREATE VIEW orders_v AS
SELECT items.item_id, title, artist, unit_price,
order_qty
FROM items, orderline, orders
WHERE items.item_id = orderline.item_id
AND orderline.order_id = orders.order_id
AND orders.order_date like '2014-01%'
OR orders.order_date like '2014-02%'
GROUP BY items.item_id;
ただし、注文されていないアイテムについてはデータが表示されているため、その理由がわかりません。 ORDER_IDの9、10、11、および12
order_id: 9, item_id: 100, order_qty: 3
order_id: 10, item_id: 450, order_qty: 6
order_id: 10, item_id: 600, order_qty: 8
order_id: 10, item_id: 200, order_qty: 4
order_id: 11, item_id: 700, order_qty: 2
order_id: 12, item_id: 300, order_qty: 4
しかし、その代わりに、それは今までに注文されていない項目を表示しています:私のテストでは
、唯一の希望の期間内に収まっ4桁があるはずですitem_id:400などの、または時間範囲外で注文されたアイテムです。
何か助けや助言をいただければ幸いです。
私のコードは見て、それをテストするともっと助けるとhereが見つかります。 AND
がOR
よりも優先され、そしてその括弧なしで、あなたが以前のすべての条件のいずれかが真でなければならないと言って、または最後にしているためである
(orders.order_date like '2014-01%'
OR orders.order_date like '2014-02%'
)
:あなたは括弧の間に次の部分を配置する必要があり
ありがとう、私はそれを認識しませんでした。私は変更を加えましたが、検索された日付範囲内にあるitem_id番号700の注文の1つを数えていない点を除いて、すべて正しいものになりました。 – Zach
質問のサンプルデータに日付を入力していないため、確認できません。あなたはそれらを追加できますか? – trincot
日付は最後に提供されたリンクにありますが、その数は多いですが、関連するものは です。 'order_id:9、order_date:2014-01-18 order_id:10、order_date :2014-01-31 order_id:11、order_date:2014-02-01 order_id:12、order_date:2014-02-27' – Zach