选择未分配的硬件

时间:2015-04-24 09:47:11

标签: sql postgresql

我有这些数据:

enter image description here

enter image description here

如何选择尚未分配的硬件?

有两种情况:

  1. employee_hardware

  2. 中不存在的硬件
  3. employee_hardware中存在的硬件但没有 allocated = TRUE

  4. 这是我的尝试,但它不正确,因为它显示了同一硬件的多行。

    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 个答案:

答案 0 :(得分: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
                  )