SQL:具有多个关系的 SELECT 对象

问题描述 投票:0回答:1
示例表格为:

物体

id名字0obj11obj22obj3
属性

id描述0属性11属性22属性3
链接

o_ida_id00010211
我现在想要生成一个仅返回 obj1 的 SQL。我尝试过 JOINing,但要么什么也没有返回,要么返回太多。

我的尝试:

SELECT o.name FROM link l INNER JOIN object o ON o.id = l.o_id INNER JOIN attr a ON a.id = l.a_id WHERE a.description = "attr1" AND a.description = "attr2"
显然不返回任何内容,因为在 JOIN 之后,这些是唯一的行。使用 OR 而不是 AND,它会同时返回 obj1 和 obj2。

有没有办法在 SQL 内部执行此操作,而不必稍后在代码中进行过滤?我觉得通过 SQL 来完成,因此在数据库中将使我的代码更快。

sql postgresql sqlite
1个回答
0
投票
一个简单的方法是限制对

o.id = 0

 的选择

SELECT o.name AS object_name, a.description AS attribute_description FROM object o JOIN link l ON o.id = l.o_id JOIN attr a ON l.a_id = a.id WHERE o.id = 0;
    
© www.soinside.com 2019 - 2024. All rights reserved.