我的桌子是:
Equipment table
EquipmentID (pk)
Type
Make
Model
Damaged
Description
EquipmentLoan table
EmployeeID
EquipmentID (fk Equipment.EquipmentID)
Start
End
Current
我正在尝试返回设备的ID,制造商,型号和描述
但是,我当前拥有的代码:
SELECT Equipment.EquipmentID,Equipment.Make,Equipment.Model,Equipment.Description
FROM Equipment
INNER JOIN EquipmentLoan ON Equipment.EquipmentID=EquipmentLoan.EquipmentID
WHERE Equipment.Damaged = 0
AND EquipmentLoan.Current = 0
AND (Equipment.Type LIKE "%video%" OR Equipment.Description LIKE "%video%")
当应返回两个结果时,当前不返回任何结果。
但是,当我使用查询时:
SELECT e.EquipmentID, e.Make, e.Model, e.Description
FROM Equipment e, EquipmentLoan l
WHERE e.Damaged = 0
AND l.Current = 0
AND (e.Type LIKE "%video%" or e.Description LIKE "%video%")
返回正确的结果,以及不符合条件的其他结果。我不知道是什么问题。
您的查询仅返回在EquipmentLoan
中具有匹配行且该行具有Current = 0
的设备。如果您还希望设备根本没有匹配的行,则需要使用LEFT JOIN
,而不是INNER JOIN
。然后检查是否缺少匹配项返回NULL
。
SELECT e.EquipmentID,e.Make,e.Model,e.Description
FROM Equipment AS e
LEFT JOIN EquipmentLoan AS l ON e.EquipmentID=l.EquipmentID AND l.Current = 1
WHERE e.Damaged = 0
AND (e.Type LIKE "%video%" OR e.Description LIKE "%video%")
AND l.EquipmentID IS NULL