2016-06-11 10 views
1

SQL - オーナーがレンタカーを持っていないレコードを検索する。 私が持っている(MS Accessで)次SQL - idが存在しないレコードを見つける/ ANY

Car_Owner 
+----+------+---------+--------+ 
| id | name | Car reg | Rental | 
+----+------+---------+--------+ 
| 1 | Adam | ABC123 | True | 
+----+------+---------+--------+ 
| 2 | John | XXX111 | True | 
+----+------+---------+--------+ 
| 2 | John | XXX222 | False | //Same person as above 
+----+------+---------+--------+ 
| 3 | Eva | YYY999 | False | 
+----+------+---------+--------+ 

どのように私はすべての車を借りdosn't人を見つけるのですか?この場合はただのエバだけでしょう。彼はすでにレンタカーを持っているので、ジョンはリストに載ってはいけません。

ご協力いただければ幸いです。

答えて

4

一つの方法は、集計を使用しています:SQL以下

having max(rental) = 0 and min(rental) = 0 
+0

のおかげ?単に "数"を入れると、私には間違った値が与えられ、混乱します。 @ Nyprez。 – Nyprez

+0

。 。あなたのコメントは質問や回答には関係していないようです。なぜならどちらも 'count()'を持っていないからです。別の質問をすることをお勧めします。 –

+0

私はそれを解決した心配はありません:)私は尋ねられた理由は不思議だったのですが、本当の質問とは何の関係もなかったので、私はそれを言及しませんでした。 – Nyprez

1
Select * from Car_Owner 
Where Rental = False 
    and Id Not In 
     (Select Id from Car_Owner Where Rental = True) 
1
select * from car_owner 
where name not in (select name from car_owner where rental = True); 
1

をあまりにもあなたを助けることがあります。

select name 
from car_owner 
group by name 
having sum(iif(rental, 1, 0)) = 0; 

また、値は常に実行して、偽であることを確認することができます。

SELECT * 
FROM Car_Owner 
WHERE Rental = False 
     AND id NOT IN (SELECT id 
         FROM Car_Owner 
         WHERE Rental = True) 

OR働いた:)ところで、私は "SELECT COUNT(ID)" を使用する方法

SELECT * 
FROM Car_Owner a 
WHERE Rental = False 
     AND NOT EXISTS (SELECT id 
         FROM Car_Owner b 
         WHERE b.Rental = True 
           AND b.id = a.id) 
+0

ありがとう! 2番目の解決策は面白かったです。 – Nyprez

関連する問題