连接多个表,条件很少且没有关系

时间:2018-12-21 02:59:43

标签: sql join search

此问题的答案如下:

  

非常抱歉,您和我的查询没有错,这只是我读取数据时的愚蠢错误,我在第二张表中没有任何相关数据,因此为空。


我在连接表以从多个表中获取一些结果时遇到问题。我有多个没有这种关系的表:

订单:

Id . Name 
---------
1  . abc
2  . def

OrderDetail

Id . OrderId . Value
---------------------
1  .    1    .   35
2  .    1    .   24 
3  .    2    .   45   

我想从OrderDetail得到一些结果,但是条件必须在Order中,例如:

SELECT od.* 
FROM Order o, OrderDetail od 
WHERE o.id = od.OrderId AND o.name = 'abc';

我希望结果会像

OrderDetail

Id . OrderId . Value
1  .    1    .   35
2  .    1    .   24 

但是结果我什么也没得到,但是如果我跑步;

SELECT od.* 
FROM Order o, OrderDetail od 
WHERE o.id = od.OrderId;

我仍然可以获得全部结果,我的2个表之间没有任何关系。

3 个答案:

答案 0 :(得分:0)

忘记加入。这会返回什么?

select o.*
from orders o
where o.name = 'abc';

我的猜测是它什么也不返回。因此,您看到的“ abc”并不是真正的“ abc”。最可能的问题是隐藏字符。以字符开头和结尾:

where o.name like '%abc%';

这可以帮助您找出问题所在。如果仍然没有返回任何内容,则说明字符之间可能存在 问题:

where o.name like '%a%b%c%';

如果仍然不返回任何内容,则“ a”,“ b”或“ c”可能是错误的字符。除非您查看要存储的实际字符,否则很难弄清楚这一点。

答案 1 :(得分:0)

非常抱歉,您的查询没有错,您的查询没有错,这只是我读取数据时的愚蠢错误,我在第二张表中没有任何相关数据,因此为空。谢谢您的时间

答案 2 :(得分:0)

我相信你是在追求

SELECT od.* FROM Order o
JOIN OrderDetail od ON o.id = od.OrderId 
WHERE o.name = 'abc';