Hallo!
Ich habe ein kleines Problemchen, für Kenner (und Könner) wahrscheinlich ziemlich einfach, aber leider haben mir die SQL Webseiten die ich so gefunden habe auch nicht weiter geholfen…
Problem:
Zwei Tabellen (es gibt auch noch eine dritte, mit den category-Namen, aber die brauchen wir hier nicht):
career hasCategory
------ -----------
id pid
firstname cid
lastname
usw.
wobei die pid (person id) in hasCategory mit der id in career übereinstimmt.
Beispieldaten:
career
-------
id
255
256
hasCateory
----------
cid pid
a1 255
a2 255
a1 256
a3 255
usw.
Muss man sich so vorstellen: die „career“ Tabelle enthält Personen, denen Interessengebiete („category“) zugeordnet werden. Die Kategorien sind einfach a1, a2 usw.
Was nun passieren soll ist das jemand sagen kann „Ich will alle sehen die a1 als category haben“, oder „alle die a1 und a2 haben“ (nicht oder, solln die doch selbst schaun
Also z.B. so:
Suche nach a1
–> ergebnis 255, 256
Suche nach a2
–> ergebnis 255
Suche nach a1 und a3
–> nix
Suche nach a1 und a2
–> ergebnis 255
Suche nach „nix“
–> keine ausgabe
Wie stell ich das mit SQL an? Wenn jemand 2 Kategorien hat würde ich natürlich ihn gern nur einmal sehen, ich denke das geht mit „DISTINCT“.
Mein SQL statement sieht momentan so aus:
SELECT career.firstname, career.lastname, career.email, career.id, career.country FROM career, hasCategory where career.id > 0 and hasCategory.pid = career.id
So. Da ist jetzt aber natürlich noch keine Bedingung die z.B. das macht:
Formularfeld „a1“ ist „on“ --> alle aus career auswählen die a1 als Interesse haben
Formularfeld „a2“ ist auch „on“ --> alle aus career auswählen die a2 als Interesse haben, und die die a1 UND a2 haben nur einmal anzeigen
Ist das klar geworden?
ich habs mit „where hasCategory.cid = a1 and where hasCategory.cid = a2“ probier, aber leider erfolglos…
Wie geht das? Wenn ich mich unklar ausgedrückt hab bitte nachfragen.
Danke!!!
Dennis =o)