如何使用SQL

时间:2017-04-14 11:57:29

标签: mysql hql

我在MySQL数据库中有2个表。

第一个表是'属性'列(id(pk),标题,描述,状态)

第二个表是' object_property'其中存储了对象和属性之间的所有关系及其关系值,具有列(id(pk),object_id,property_id(fk引用列是'属性表的id),值)

现在我想从'属性'中提取所有属性的结果。 ' object_property'中关系不存在的表格。表

我需要为此编写SQL连接查询...

有人可以帮帮我吗?我是SQL的新手。

谢谢!

3 个答案:

答案 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 ) ;