Php 如何在sql查询中将子表声明为父表?
我在一个搜索页面上工作,总共有5个表我必须加入Php 如何在sql查询中将子表声明为父表?,php,mysql,left-join,inner-join,parent-child,Php,Mysql,Left Join,Inner Join,Parent Child,我在一个搜索页面上工作,总共有5个表我必须加入 Table one (fields) = id | title | country | state Table two (fields) = id | category Table three (fields) = id | tbl_1_id | tbl_2_id | value Table Four (fields) = id | tbl_1_id | data Table Five (fields) = id | tbl_
Table one (fields) = id | title | country | state
Table two (fields) = id | category
Table three (fields) = id | tbl_1_id | tbl_2_id | value
Table Four (fields) = id | tbl_1_id | data
Table Five (fields) = id | tbl_1_id | tags
问题是,我的查询无法从表2中获取数据
我的问题是
SELECT one.*, two.*, three.*, four.*, five.*
FROM one
LEFT JOIN two ON two.id = three.tbl_2_id
LEFT JOIN three ON one.id = three.tbl_1_id
LEFT JOIN four ON one.id = four.tbl_1_id
LEFT JOIN five ON one.id = five.tbl_1_id
WHERE
one.title LIKE '%$keyword%' OR
one.country LIKE '%$keyword%' OR
one.state LIKE '%$keyword%' OR
two.category LIKE '%$keyword%' OR
three.value LIKE '%$keyword%' OR
four.data LIKE '%$keyword%' OR
five.tags LIKE '%$keyword%' ORDER By one.id DESC";
我认为,表2没有表1中的任何字段,这就是为什么我的查询没有从表2中获取数据
我说得对吗
表1是父表,所有其他表都是子表。正当
我的想法是,如果我能使表2成为另一个父表,表3成为它的子表,也许我的查询会起作用
我正在寻找一个查询,什么可以从所有表中获取所有数据。列是否为空。
希望你们能理解。如果没有,请告诉我,谢谢。我解决了它:
这是我的新问题-
SELECT one.*, two.*, three.*, four.*, five.*
FROM one
LEFT JOIN two
INNER JOIN three ON two.id = three.tbl_2_id
ON one.id = three.tbl_1_id
LEFT JOIN four ON one.id = four.tbl_1_id
LEFT JOIN five ON one.id = five.tbl_1_id
WHERE
one.title LIKE '%$keyword%' OR
one.country LIKE '%$keyword%' OR
one.state LIKE '%$keyword%' OR
two.category LIKE '%$keyword%' OR
three.value LIKE '%$keyword%' OR
four.data LIKE '%$keyword%' OR
five.tags LIKE '%$keyword%' ORDER By one.id DESC
我不知道这是否是编写此查询的正确方法,但它确实有效。不!将变量绑定到查询。这是非常危险的。不工作意味着什么?我猜是你的or开关。在你所有的or语句周围使用括号将它们分组。FrankerZ的意思是让你在代码问题中阅读请给出一个-cut&paste&runnable代码;作为表格初始化代码的示例输入,所需和实际输出包括逐字错误消息;标签和版本;清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。调试基础。PS您是否意识到您的代码意味着或七个.field,如“%$keyword%”,type=1,status=1?这将解析为一个左连接两个内部连接三个在二上。id=三。tbl_2_id在一上。id=三。tbl_1_id左。。。左边我告诉过你,你的WHERE删除了外部连接将添加到内部连接之外的行,因此是一个内部连接两个内部连接三个在二上。id=三。tbl_2_id在一上。id=二。id内部。。。内部的Ie两个内部连接三对二。id=三。tbl_2_id内部连接一对一。id=三。tbl_1_id内部连接三对二。id=三。tbl_2_id内部。。。内部的还有一个内部连接二对一。id=二。id内部连接三对二。id=三。tbl_2_id内部。。。内部的