我目前有两个MSSQL表。一个“项目”表,其中包含一个项目“名称”和一个“托盘”表,其中包含一个托盘“条形码”。我有一个名为“ItemPallets”的连接表,它将多个项目链接到多个托盘。续集查询,多对多关系问题
“ItemPallets”包含项目Id(主键)和Pallet Id(主键)以及“序列号”。
的数据的一个例子可以是:
项目
+ -- + ---- +
| Id | Name |
+ -- + ---- +
| 1 | 123 |
+ -- + ---- +
托盘
+ -- + ------- +
| Id | Barcode |
+ -- + ------- +
| 1 | ABC |
| 2 | DEF |
+ -- + ------- +
ItemPallets
+ -- + ------ + -------- + ------------- +
| Id | ItemId | PalletId | Serial Number |
+ -- + ------ + -------- + ------------- +
| 1 | 1 | 1 | a400 |
| 2 | 1 | 1 | a401 |
| 3 | 1 | 1 | a402 |
| 4 | 1 | 2 | a403 |
+ -- + ------ + -------- + ------------- +
这意味着在托盘ABC中有三个项目,分别为序号a400,a401和a402,最后一个项目的名称为123,托盘DEF中的序号为a403。
我试图找回所有ItemPallet行与项目托盘相关联,即Item.Pallet [0] .ItemPallets应该包含一个数组,我期望该数组包含三个行,序号a400,a401和a402。
但是,虽然我的数组包含两个托盘,但为什么每个这些托盘只包含一个序列号?
的代码我目前使用情况如下:
models.Item.findOne({
where: {id: 1},
include: [
{ model: models.Pallet }
]
});
对不起,我的错误。查询实际返回两行,每个Pallet一个。这很好,但是,我期望看到每个Pallet中的每个序列号。我需要查询该项目并获取该项目的所有序列号。这需要在项目表上完成,因为我有其他联接和其他where子句特定于Item表。 – KittenKiller
是的,我的错误也返回了两行,因为'ItemPallets'中有两个项目,但它仍然只在每个'Pallet'对象上返回单个'ItemPallet'。我已经更新了答案,向您展示了如何通过查询“Item”模型来完成 – piotrbienias