我有几个像这样链接的表:
- 道路(ID、名称)
- 房屋(id、rid、名称、门牌号)通过“rid”列链接到道路。
- 贷款(id,rid)通过列“rid”链接到道路。
- 贷款条目(id、lid、门牌号)按“lid”列和门牌号链接到贷款。
当用户想要删除房屋时,我必须删除具有特定门牌号的贷款条目。
因此,从房屋 id 中我可以获得道路 id,之后我可以获得与该道路相关的贷款,并删除所有带有盖子和门牌号的贷款条目。
我为此编写了带有子选择的查询,但我想通过连接它可能会快得多。 我被困在这里了。我什至不确定我做了我想做的事,并且我收到一条 mysql 错误消息:
"Unknown table 'le' in MULTI DELETE".
我尝试了一些变体,但无法弄清楚。
我的查询:
DELETE le
FROM `roads` AS r
LEFT JOIN `loans` AS l ON l.rid = r.id
LEFT JOIN `loan-entries` AS le ON le.lid = l.id
LEFT JOIN `houses` AS h ON h.rid = r.id
WHERE h.id = '" . $_POST['id'] . "'
AND le.housenumber = h.housenumber
最佳答案
我知道现在回答这个问题有点晚了,但问题是你只能删除最左边的表。 为此,您需要稍微重新组织您的连接。当您使用左连接从“le”表中删除时,您实际上只需要“r”和“l”表中通过内连接连接的值,因此从“le”表开始,然后内连接“r”和“l',然后继续'h'。
关于php - 连接删除mysql php中的未知表多重删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546470/