php - 连接删除mysql php中的未知表多重删除

标签 php mysql sql-delete

我有几个像这样链接的表:

  1. 道路(ID、名称)
  2. 房屋(id、rid、名称、门牌号)通过“rid”列链接到道路。
  3. 贷款(id,rid)通过列“rid”链接到道路。
  4. 贷款条目(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/

相关文章:

php - 如何从 mysql 解析 JSON 图像并填充 ListView

php - 仅通过检查键来递归删除数组及其子元素的元素

php - PDO错误: SQLSTATE[HY000]: General error: 2031

php - MySQL 空间扩展和 PHP

php - "do something OR DIE()"在 PHP 中是如何工作的?

php - Web 服务不适用于 mysql

php - Laravel 5.2 分页

Python MySQL - SELECT 有效但 DELETE 无效?

mysql - 删除 MySQL 子查询

MySQL - 删除在秒/范围内创建的条目