我的查询结果有问题。我有2个表,我想加入特定的连接,以获取有关它的所有信息和不包括第二个表的条件。有我的表:
main_orders:
id | destination
----------
1 | London
2 | Germany
2 | Netherland
3 | Polska
4 | JP
includes:
id | rel_id
----------
1 | 2
1 | 3
这里id号1是主要订单,它还包括其他订单显示,如第二个表中的rel_id
我想从main_orders中选择id 1的订单详情,以及与此id相关的订单
我的查询是,
SELECT a.id FROM main_orders a, includes b
where (a.id = 1) OR (b.id = 1 and a.id = b.rel_id)
只有在第二个表中有任何相对订单时才有效,请帮助结果如下
RESULTANT ROWS:
id | destination
----------
1 | London
2 | Germany
2 | Netherland
3 | Polska
由于
答案 0 :(得分:3)
你可以使用exists子句:
SELECT a.id, a.destination FROM
main_orders a
where a.id = 1
or exists (select null
from includes b
where b.rel_id = a.id
and b.id =1);
请参阅sqlFiddle
答案 1 :(得分:0)
也许是这样的?
选择a.id从LEFT JOIN b on a.id = b.id GROUP BY a.id;
(显然使用你的表名)
答案 2 :(得分:0)
SELECT main_orders.id, main_orders.destination
FROM main_orders
LEFT JOIN includes ON includes.rel_id = main_orders.id
WHERE main_orders.id = 1 OR includes.id = 1
在sqlfiddle上查看。
答案 3 :(得分:0)
试试这个。
SELECT a.id FROM main_orders a, includes b
where (b.id=1 and (a.id=b.rel_id or a.id=1 ))