2012-04-05 6 views
1

Ich habe zwei TabellenWie wähle ich die Datensätze aus einer Tabelle1 aus, wo table1.id in der ID-Spalte von table2 existiert?

Menschen

name id 

man1 456 
man2 123 
man3 789 

Noten

content id 

testing 123 
hello 456 

SELECT DISTINCT id FROM people ist eine Obermenge von SELECT DISTINCT id FROM notes.

Ich möchte zwei Abfragen schreiben. Eine, die alle Datensätze aus der Tabelle people auswählt, für die ein Datensatz in notes existiert, wobei der Wert in der ID-Spalte notes gleich people.id ist.

name id 

man1 456 
man2 123 

Die anderen wählt alle Datensätze aus der Tabelle people, für die ein Datensatz in notes nicht existiert, wenn der Wert in der ID-Spalte von notes zu people.id

content id 

man3 789 
gleich
+0

Ist es möglich, mehr als eine Note für den gleichen Mann zu haben? Ich gehe davon aus, dass Sie in beiden Abfragen das Wort "Distinct" verwenden. Genauso ist es möglich, mehr als einen Mann mit der gleichen ID zu haben? –

+0

Chris - es ist möglich, mehr als eine Note für denselben Mann zu haben. Es ist auch möglich, mehr als einen Mann mit der gleichen ID zu haben – user784637

Antwort

2
SELECT * FROM PEOPLE WHERE ID IN (SELECT ID FROM NOTES) 

Ergebnisse Man1 456 & Man2 123

SELECT * FROM PEOPLE WHERE ID NOT IN (SELECT ID FROM NOTES) 

Ergebnisse Man3 789

1
--people with notes 
select distinct p.id, p.name 
from people p 
inner join notes n on p.id = n.id 

--people with no notes 
select p.id, p.name 
from people p 
left outer join notes n on p.id = n.id 
where n.id is null 
Verwandte Themen