我有這樣的關(guān)系:Clients -> ProgramsClients <- Programs我想做的基本上是:SELECT * FROM Programs p JOIN ProgramsClients pc on p.id = pc.programId WHERE pc.clientId = 1 LIMIT 0, 100;我已經(jīng)設(shè)法通過以下代碼達(dá)到了這樣的目的:query = { include: [{ model: models.Clients, attributes: [], require: true, }], where: { '$Clients.id$': 1 }}models.Programs.findAll(query) // This works其中產(chǎn)生:SELECT [...]FROM `programs` AS `Programs` LEFT OUTER JOIN ( `ProgramsClients` AS `Clients->ProgramsClients` INNER JOIN `clients` AS `Clients` ON `Clients`.`id` = `Clients->ProgramsClients`.`ClientId`) ON `Programs`.`id` = `Clients->ProgramsClients`.`ProgramId` WHERE `Clients`.`id` = 1;這有效,但是當(dāng)我嘗試限制它時,出現(xiàn)錯誤。代碼:query = { include: [{ model: models.Clients, attributes: [], require: true, }], limit: 0, offset: 10, where: { '$Clients.id$': 1 }}models.Programs.findAll(query) // This fails其中產(chǎn)生:SELECT [...]FROM (SELECT `Programs`.`id`, `Programs`.`name`, `Programs`.`description`, `Programs`.`createdAt`, `Programs`.`updatedAt` FROM `programs` AS `Programs` WHERE `Clients`.`id` = 1 LIMIT 0, 10) AS `Programs` LEFT OUTER JOIN ( `ProgramsClients` AS `Clients->ProgramsClients` INNER JOIN `clients` AS `Clients` ON `Clients`.`id` = `Clients->ProgramsClients`.`ClientId`) ON `Programs`.`id` = `Clients->ProgramsClients`.`ProgramId`;錯誤: DatabaseError [SequelizeDatabaseError]: Unknown column 'Clients.id' in 'where clause'注意:我使用的是 MySQL 數(shù)據(jù)庫。有沒有更簡單的方法來解決這個問題并為 SQL 生成所需的(或類似的)結(jié)果?
使用 where 和 limit 查詢多對多關(guān)系
繁華開滿天機(jī)
2023-03-10 16:06:43