2017-04-14 33 views
0

我在MySQL數據庫中有2個表。如何使用SQL應用連接查詢

第一張表是「屬性」的列(ID(PK),標題,描述,狀態)

第二個表是其中所有對象和屬性之間的關係被存儲「object_property」和它們之間的關係值,具有列(id(pk),object_id,property_id(fk參考列是屬性表的'id'),值)

現在我想從'property'表中提取所有屬性的結果,其中關係'object_property'表中不存在。

我需要編寫SQL連接此查詢...

任何人可以幫助我嗎?我是SQL新手。

謝謝!

回答

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 POJOs),而不是表格本身。我可以提供以下HQL查詢:

from Property p 
left join p.ObjectProperty as op 
where op is null 

這是假設你有一個名爲Property類,它代表了property表。它還假定object_property表具有實體類ObjectProperty,並且Property具有對ObjectProperty的引用。

0

試試這個:

select p.* FROM property p inner join object_property o on o.property_id!=p.id; 
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,這取決於你想匹配的東西,在這裏,你想找到屬性中id不存在於object_property表(外部部分LEFT OUTER JOIN)中的行,

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