Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
joined delete mysql php中的未知表multidelete_Php_Mysql_Sql Delete - Fatal编程技术网

joined delete mysql php中的未知表multidelete

joined delete mysql php中的未知表multidelete,php,mysql,sql-delete,Php,Mysql,Sql Delete,我有两个表链接如下: 道路(id、名称) 房屋(id、rid、名称、房屋编号)通过列“rid”链接到道路 贷款(id,rid)通过列“rid”链接到道路 贷款条目(id、lid、门牌号)按“lid”列和门牌号链接到贷款 当用户想要删除房屋时,我必须删除带有特定房屋编号的贷款条目 所以从house id我得到了道路id,之后我可以得到与该道路相关的贷款,并删除所有带有lid和house Number的贷款条目 我为此编写了带有子选择的查询,但我想使用连接可能会快得多。 我在这里结巴了。我甚至不确定

我有两个表链接如下:

  • 道路(id、名称)
  • 房屋(id、rid、名称、房屋编号)通过列“rid”链接到道路
  • 贷款(id,rid)通过列“rid”链接到道路
  • 贷款条目(id、lid、门牌号)按“lid”列和门牌号链接到贷款
  • 当用户想要删除房屋时,我必须删除带有特定房屋编号的贷款条目

    所以从house id我得到了道路id,之后我可以得到与该道路相关的贷款,并删除所有带有lid和house Number的贷款条目

    我为此编写了带有子选择的查询,但我想使用连接可能会快得多。 我在这里结巴了。我甚至不确定我是否做了我想做的,我收到一条mysql错误消息:

    “多重删除中的未知表'le'

    我试过一些变化,但没办法

    我的问题是:

    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”表。

    您看了吗?你得到的看起来像是一个
    选择
    ,而不是一个从[…]删除的
    。戴夫,这是不正确的。请看一下手册。@Richard好的,很公平,我以前从未见过这种语法。@Jared Farrish:ofc我检查了删除语法,实际上我在mysql删除语法页面中找到了在删除时使用联接的想法。“从t1中删除t1在t1.id=t2.id时左连接t2,其中t2.id为NULL;”这是删除表,而不是列。再看看语法。