2015-04-24 20 views
1

我有這樣的數據:選擇未分配的硬件

enter image description here

enter image description here

如何選擇尚未分配的硬件?

有兩種情況:

  1. 的硬件並不在employee_hardware

  2. 存在於employee_hardware的硬件存在,但沒有 allocated = TRUE

這是我的嘗試,但它是不正確的,因爲它顯示了同一個hardwar的多行即

SELECT h.hardware_id 
    ,h.hardware_name 
    ,h.created_at 
    ,h.updated_at 
FROM hardware h 
LEFT JOIN employee_hardware eh ON h.hardware_id = eh.hardware_id 
WHERE h.hardware_type_id = 2 
    AND (
     eh.employee_id IS NULL 
     OR eh.allocated = FALSE 
     ) 
ORDER BY h.hardware_id 

enter image description here

+1

什麼是數據庫使用的是? – logan

+0

對不起,我錯過了。 Postgres的。 – Emerald214

回答

2

你可以試試這個

SELECT h.* 
FROM hardware h 
WHERE NOT EXISTS ( SELECT 'a' 
        FROM employee_hardware eh 
        WHERE h.hardware_id = eh.hardware_id 
        AND eh.allocated = TRUE 
       )