Datenbank-Abfrage(ausschlussverfahren)
- 
					
					
					
					
 Hallo, ich versuche mich gerade an einem programm wie z.B. http://de.akinator.com/ 
 Habe mir überlegt, dass es eigentlich (erst einmal grob) folgendermassen funktionieren sollte:Personen-Tabelle (ID, PersonName) 
 1, Isaac Newton
 2, Bill gatesEigenschaften (ID, EigenschaftName) 
 1001, "ist Engländer"
 1002, "ist Amerikaner"
 1003, "ist Physiker"Zuweisungen (PersonenID, EigenschaftenID, Wert) 
 1, 1001, 1
 2, 1001, 0
 1, 1002, 0
 2, 1002, 1
 1, 1003, 1Mein Problem ist, dass ich nun ein SQL-Statement erstellen muss, dass aus der Tabelle "Zuweisungen" alle "Gültigen" PersonenIDs zurückliefert ( in Bezug auf bereits beantwortete Fragen) 
 z.B. hat der User geantowrtet:
 1001(ist Engländer) => 1 (true)
 1003(ist Physiker) => 0 (false)Wenn ich die beiden antworten mittels AND verknüpfe 
 Select Distinct PersonenID from zuweisungen where
 EigenschaftenID=1001 AND Wert = 1
 AND
 EigenschaftenID=1003 AND Wert = 0kommt natürlich kein Datensatz raus, da EigenschaftenID nicht 1001 UND 1003 (gleichzeitig) sein kann. 
 Mittels ODER-Verknüpfung bekomme ich aber ungültige(zuviele) datensätze zurück, da die verschiedenen Antworten sich ja immer weiter einschränken müssen (also so gesehehn AND-verknpüft)Irgendwie muss ich das anders lösen, habe aber keine Idee, wie. hat jemand einen Hinweis ? 
 
- 
					
					
					
					
 Welches Datenbanksystem verwendest Du? Es gibt verschiedene Lösungen. Um beispielsweise alle Amerikaner zu finden die keine Physiker sind könnte man anfragen: SELECT PersonenID FROM Zuweisungen WHERE EigenschaftenID=1002 
 EXCEPT
 SELECT PersonenID FROM Zuweisungen WHERE EigenschaftenID=1003Die Wert-Spalte kannst du dir dabei klemmen. Trag einfach nur die Treffer (Wert=1) ein.