Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

SQL SELECT-Abfrage Problem





Frage

Ich habe 2 Tabellen, die ich beide fόr eine SELECT-Anweisung benφtige. In der einen Tabelle sind Personendaten und in der 2. Tabelle sind Kategorien, die den Personen zugeordnet werden sollen. Die Verknόpfung erfolgt όber die beiden Felder Handyvorwahl und Handynummer. Ich brauche nun eine Abfrage, die mir als Ergebnis eine Tabelle liefert, die jeweils Vorname, Handyvorwahl, Handynummer anzeigt, denen die Kategorien(kl_kategorie) 19 und 20 zuordnet werden. Es darf aber pro Handyvorwahl+Handynummer nur ein Datensatz angezeigt werden. Die zweite Anfrage ist δhnlich, da ist es aber so, dass es reicht, wenn der betreffenden Person nur eine der Kategorien zugeordnet werden kann (Oder Verknόpfung). Da habe ich eine Lφsung, weiί nur nicht, ob das noch besser zu lφsen ist. (siehe unten) Wδre super, wenn mir hier jemand auf die Sprόnge helfen kφnnte. Das Ganze soll auf einer MySQL Datenbank funktionieren. Danke fόr Eure Hilfe. Tabelle1 g_vorname___g_nachname___g_handyvorwahl__g_handynummer______…………. Tom_____Mueller____49170______12345678______…………. Steffan___Meier_____49171______12346497______…………. Marion___Richter____49162______56464313______…………. Heike____Schmidt___49175______64643134______…………. Simone__Sommer___49171______78661647______…………. Pamela__Honig_____49174______34347674______…………. Ingo____Eckers_____49163______26578535______…………. ……….___…………..______………..______…………______…………. Primδrschlόssel sind g_handyvorwahl und g_handynummer Tabelle2 kl_handyvorwahl__kl_handynummer_kl_kategorie__……………. 49170______12345678______15______……………. 49170______12345678______19______……………. 49170______12345678______20______……………. 49162______56464313______15______……………. 49162______56464313______16______……………. 49162______56464313______19______……………. 49162______56464313______21______……………. 49175______64643134______19______……………. 49175______64643134______20______……………. 49171______78661647______11______……………. 49171______78661647______20______……………. 49171______78661647______22______……………. 49171______78661647______24______……………. 49174______34347674______19______……………. 49174______34347674______20______……………. 49174______34347674______21______……………. 49163______26578535______23______……………. 49163______26578535______25______……………. ………..______………….______…………______……………. Primδrschlόssel ist eine Spalte mit einem Autowert Gesuchte Ergebnistabelle: 1. Zeige Tabelle, mit jeweils Vorname, Handyvorwahl, Handynummer, bei denen die Kategorien (kl_kategorie) 19 oder 20 zuordnet werden. Es darf aber pro Handyvorwahl+Handynummer nur ein Datensatz angezeigt werden. 2. Zeige Tabelle, mit jeweils Vorname, Handyvorwahl, Handynummer, bei denen die Kategorien(kl_kategorie) 19 und 20 zuordnet werden. Es darf aber pro Handyvorwahl+Handynummer nur ein Datensatz angezeigt werden. Ergebnis1: SELECT DISTINCT g_vorname, g_handyvorwahl, g_handynummer FROM Tabelle1 INNER JOIN Tabelle2 ON [Tabelle1.g_handynummer = Tabelle2.kl_handynummer) AND (Tabelle1.g_handyvorwahl = Tabelle2.kl_handyvorwahl) WHERE kl_kategorie IN (19,20) Ergebnis2: ?????????????

Antwort 1 von semi

Hδnge noch die folgenden zwei Zeilen an die erste Abfrage.
GROUP BY Tabelle1.g_handyvorwahl, Tabelle1.g_handynummer
HAVING COUNT(*)=2
Ich gehe dabei davon aus, dass eine Person nicht mehrfach in den jeweiligen Kategorien existiert. Klartzext: Nur einmal Kat-19 und Kat-20

Gruί,
Michael

Antwort 2 von DJTomPW

Danke fόr den Tipp. Manchmal wird man betriebsblind. Da ist es echt super so ein Forum hier zu kennen. Danke nochmal.