我在图片中有这个表格数据。它基本上由同一张表中的地名和它所属的其他地方组成。字段belongs_to
指的是其他地方的id
。
这是我正在使用的查询:
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_order
为 1
或 belongs_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/