我在MySQL数据库中有2个表。
第一个表是'属性'列(id(pk),标题,描述,状态)
第二个表是' object_property'其中存储了对象和属性之间的所有关系及其关系值,具有列(id(pk),object_id,property_id(fk引用列是'属性表的id),值)
现在我想从'属性'中提取所有属性的结果。 ' object_property'中关系不存在的表格。表
我需要为此编写SQL连接查询...
有人可以帮帮我吗?我是SQL的新手。
谢谢!
答案 0 :(得分:0)
试试这个:
select p.* FROM property p inner join object_property o on o.property_id!=p.id;
答案 1 :(得分:0)
如果您正在编写一个直接在MySQL中运行的原始查询,则可以使用以下LEFT JOIN
:
SELECT p.*
FROM property p
LEFT JOIN object_property op
ON p.id = op.property_id
WHERE op.property_id IS NULL
如果您在HQL中编写查询,那么您将处理代表表的实体(Java POJO),而不是表本身。我可以提供以下HQL查询:
from Property p
left join p.ObjectProperty as op
where op is null
这假设您有一个名为Property
的类,它代表property
表。它还假定object_property
表具有实体类ObjectProperty
,并且Property
具有对ObjectProperty
的引用。
答案 2 :(得分:0)
你有两张桌子,
table property ( id, title, description, status, primary key(id) )
table object_property ( id, object_id, property_id, value, primary key(id) )
其中object_property.property_id是property.id的外键
您可以加入这些表以获取共享公钥的行(元组)
SELECT p.id, p.title, p.description, p.status, op.id, op.object_id, op.value
FROM property AS p LEFT JOIN object_property AS op ON p.id = op.property_id ;
您可以使用INNER JOIN,LEFT JOIN,RIGHT JOIN,具体取决于您要匹配的内容,但此处您要查找属性中object_property表中不存在id的行( LEFT OUTER JOIN的OUTER部分,
SELECT p.id, p.title, p.description, p.status
FROM property AS p
WHERE p.id NOT IN (SELECT DISTINCT op.property_id FROM object_property AS op ) ;