我尝试合并两个SQL查询,但是我失败了。
该表包含列" id,bid,data1,data2,data3,parent"。
第一个查询将为我提供行和数据的ID(按出价选择):
SELECT id, data1, data2, data3 FROM table WHERE bid = :bid LIMIT 1
此id将用于获取第一个结果的子项的所有行的数据:
SELECT data1, data2, data3 FROM table WHERE parent = :id
作为我的结果,我只需要将main-part(query1)的data1,data2和data3以及所有子(query2)放在一个结果中...
我试过这个:
SELECT
main.data1 as data1,
main.data2 as data2,
main.data3 as data3
FROM table main
LEFT JOIN table children ON main.id = children.parent
WHERE bid = :bid
我做错了什么?
答案 0 :(得分:0)
试试这个......
SELECT
main.data1 as data1,
main.data2 as data2,
main.data3 as data3
FROM table main
LEFT JOIN table children
ON main.parent = children.id
答案 1 :(得分:0)
要获取父和子数据,您必须在列列表中选择两者。此外,您必须使bid
符合父母或子女表的资格。作为最后一部分,使用left join
还会选择没有子项的行
select p.data1 as p1, p.data2 as p2, p.data3 as p3,
c.data1 as c1, c.data2 as c2, c.data3 as c3
from t1 p
join t1 c on c.parent = p.id
where p.bid = :bid
我没有看到在单个查询中获取父行和子行的方法。你可以做的是一个union,它在第一个查询中获取父行,在第二个部分中获取所有子行
select p.data1, p.data2, p.data3
from t1 p
where p.bid = :bid
union
select c.data1, c.data2, c.data3
from t1 p
join t1 c on c.parent = p.id
where p.bid = :bid