使用联接从mysql中的多个表中获取数据将导致错误的数据

时间:2018-09-23 20:58:27

标签: mysql

我需要选择客户和产品代码以及下订单的日期,但是加入订单时遇到了一些麻烦。

enter image description here

我的SQL选择:

select c.customerNumber, p.productCode, o.orderDate as data_compra
    from customers as c inner join orders as o
    inner join products as p
    where p.productCode =
                any (
                        select p2.productCode from products as p2
                        inner join orders as o
                        inner join orderdetails as odt
                        where o.orderNumber = odt.orderNumber and
                        p2.productCode = odt.productCode
                    )
    and o.orderNumber = 
                any (
                        select o2.orderNumber from orders as o2
                        inner join orderdetails as odt
                        where o.orderNumber = odt.orderNumber and
                        p.productCode = odt.productCode
                    )

2 个答案:

答案 0 :(得分:0)

两个简单的联接应该执行您想要的操作:

select
    c.customerNumber,
    d.productCode,
    o.orderDate
  from customer c
  join orders o on o.customerNumber = c.customerNumber
  join orderdetails d on d.orderNumber = o.orderNumber

答案 1 :(得分:0)

在代码中,您要求内部联接两个表,但未指定关系。您需要这样做,SQL才能关联并匹配每个表中的行。

您可以使用ON关键字进行此操作。

我建议您先观看video并阅读article,然后再继续