Mysql 联接查询中的结果重复

Mysql 联接查询中的结果重复,mysql,join,Mysql,Join,这是我的桌子: 书籍(id、标题、作者、isbn、成本) 订单(订单ID、订单日期、用户(多通)、订单项(多通)) OrderItem(id、book(manytone)、数量、总价) 以下是查询: 结果如下: 但是,结果应该只有2行,只包含orderId 1和2而不是4行。您没有正确加入订单。它看起来像是在做交叉连接。请参阅下面正确的sql select * from orders o inner join orderitem oi on oi.orderID = o

这是我的桌子:

书籍(id、标题、作者、isbn、成本)

订单(订单ID、订单日期、用户(多通)、订单项(多通))

OrderItem(id、book(manytone)、数量、总价)

以下是查询:

结果如下:


但是,结果应该只有
2行
,只包含
orderId 1和2
而不是4行。

您没有正确加入订单。它看起来像是在做交叉连接。请参阅下面正确的sql

select
  *
from
  orders o

  inner join orderitem oi on
    oi.orderID = o.orderID -- note the additional join here

  inner join book b on
    b.id = oi.book_id

您可以在连接上看到我已将订单正确连接到orderitem。您可能需要更改id,因为我不确定它应该是order\u id、orderID还是仅仅id。我不知道您的模式。

我不明白复制的内容,从您的加入中,您有两个订单,每个订单都有相同的两本书,给您4个结果。您分别在这两个表上进行选择的原因是什么?在orderitem表的条件任务中,这两个内部联接表之间没有关联,即
orders
orderitem
。它将通过交叉连接产生笛卡尔积。您需要
…从订单加入订单上的orderitem.orderID=orderitem.id加入书本上的book.id=orderitem.book\u id
(别名仅在列名冲突时才需要。
book\u id
未在
orderitem
表中列出)。