2012-07-20 131 views
1

我有兩個表格,一個叫做許可證,一個叫做系統。 現在許可證表保存系統ID和許可證類型(完整或試用)。 和系統表保存系統mac_address。查找不重複記錄

現在一個系統可能有多個試用許可證和一個完整許可證。 現在我想找到完整版本尚未生成的系統,並將它們與它們的mac_address一起分組。

請小小的建議就足夠了。

回答

1
select 
    s.* 
from 
    systems as s 
where 
    s.system_id not in 
    (select l.system_id from licenses as l where l.licence_type='full') 
+1

相當接近,但它也顯示了爲同一個mac_address生成的試用版記錄... – 2012-07-20 09:51:28

+1

根據你的回答,感謝你我做了一些破解,最後我得到了我想要的結果。 謝謝先生。 – 2012-07-20 12:06:28

+1

選擇 系統。*, 許可。* 從 許可證作爲許可 內部聯接系統,系統上ystems.id = License.system_id WHERE system.mac_address NOT IN ( 從許可證作爲LIC選擇system.mac_address 內對 lic.system_id = s.id 其中lic.license_type = '全' ) 加入系統爲S使用此查詢我得到了我的結果。 – 2012-07-20 12:12:32

0

所以如果我瞭解你,你需要找到所有沒有列出「完整」許可證的系統。在純SQL中,您可以使用LEFT JOIN實現此目的。像

SELECT DISTINCT s.system_id,s.mac_address 
FROM systems s 
LEFT JOIN licences l ON s.system_id=l.system_id AND l.licence_type = 'full' 
WHERE l.licence_id IS NULL 
+1

是的先生,但使用我的答案查詢我發現結果我希望得到。 我也很感激你的答案也給了我想要得到我想要得到的東西。 – 2012-07-21 03:25:13

0

我的東西真的不明白你的問題,但你不能讓唯一的一列?

+1

我無法根據其mac_address來管理系統及其許可證。 現在系統可以使用相同的mac_address但不同的寄存器鍵添加多次。 所以我需要跟蹤所有信息。 – 2012-07-20 09:55:49