我做了一个电子商务模型的数据库。
到目前为止,每个看起来都很好,但是当我做一些查询时,我得到错误的结果
我为它做了一个sqlfiddle,所以你可以查看它
当我做SELECT produkt_name, shipping_date
FROM product, shipping
WHERE shipping_date BETWEEN '2019-01-01' AND '2021-12-31'
,我希望
produckt_name | shipping_date | Ballkleid优雅 | 2019-10-22 |
---|---|
科隆测试器Sammlung 1 (10 flashchen) | 2020-07-11 |
Glasblaserei层:哈泽 | 2021-12-07 |
您需要执行更多的连接。首先,不要使用直角连接,因为它通常会导致错误的结果。你需要结合产品、订单、发票和运输来得到结果:
SELECT product.produkt_name, shipping.shipping_date
FROM product
join product_order on product_order.fk_produkt_id=product.product_id
join invoice on invoice.fk_order_id=product_order.order_id
join shipping on shipping.fk_invoice_id=invoice.invoice_id
WHERE shipping.shipping_date BETWEEN '2019-01-01' AND '2021-12-31'
你也可以用另一种方法,从发货开始。这取决于你是否有很多货物。两个查询返回相同的结果。
SELECT product.produkt_name, shipping.shipping_date
from shipping
join invoice on shipping.fk_invoice_id=invoice.invoice_id
join product_order on invoice.fk_order_id=product_order.order_id
join product on product_order.fk_produkt_id=product.product_id
WHERE shipping.shipping_date BETWEEN '2019-01-01' AND '2021-12-31'