php - 如何循环 JOIN

标签 php mysql

我在图片中有这个表格数据。它基本上由同一张表中的地名和它所属的其他地方组成。字段belongs_to 指的是其他地方的id

enter image description here

这是我正在使用的查询:

         SELECT A.type,
                A.name_en AS name_A,
                B.name_en AS name_B,
                C.name_en AS name_C

                FROM address AS A
                LEFT JOIN address AS B ON A.belongs_to = B.id
                LEFT JOIN address AS C ON B.belongs_to = C.id 
                WHERE A.name_en LIKE '%".$_GET['name']."%'
                "

当我输入“sy”时它工作正常:

[type] = city
[name_A] =sydney
[name_B] =NSW
[name_C] =australia

然而,当我输入“ken”时,它让我:

[type] =suburb
[name_A] = kensington
[name_B] =sydney
[name_C] = NSW

它想念澳大利亚。我想让它变得灵活,所以它让我得到所有数据,直到 type_order1belongs_to 的国家/地区名称0。我一直在尝试寻找循环技术,但找不到很好的引用。告诉我如果您有其他建议来完成这项工作,或者如果您认为我的解决方案是正确的,请帮助我解决循环问题或向我推荐有关 MySQL 循环的详细引用资料。

最佳答案

用户加入没有错。您的条件基本上取决于您的 WHERE 条件。请提供表的结构,或者你可以试试这个:

SELECT A.type,
                A.name_en AS name_A,
                B.name_en AS name_B,
                C.name_en AS name_C

                FROM address AS A
                LEFT JOIN address AS B ON A.belongs_to = B.id
                LEFT JOIN address AS C ON B.belongs_to = C.id 
                WHERE A.name_en LIKE '%".$_GET['name']."%' or A.id=1

关于php - 如何循环 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755866/

相关文章:

php - 多选查询 MySQL

mysql - DISTINCT语句如何合并一个表中的两行

Mysql获取字符串最后一次出现之前的子字符串

mysql - 如何在超过 1000 万并且还在增加的情况下运行 select mysql 命令

phpmyadmin import/export - 在不更改数据的情况下向旧表添加新结构

php - 如何防止通过地址栏进行sql注入(inject)

php - 找不到 php.ini 中的 post_max_size

PHP MySQL 只更新一个单元格,而不是整行

php - 按字母顺序排列阿拉伯名称 Mysql & php

python - 从 Django 1.6 (with south) 升级到 1.8 不会修改用户表上的 'last_login'