PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL - Joins...


Gast
2005-10-22, 00:10:51
Hab ne Tabelle username mit z.B. dem Inhalt
username
---------
Thomas
und ne Tabelle Telefonnummern mit z.B. dem Inhalt
username|Telefonnummer|id
---------|--------------|--
Thomas | 911221 |1
Thomas | 54545 |2
Nun würde ich gerne nen Join haben, der für jeden usernamen nur die erste Telefonnummer (also die mit der kleinsten id) ausspuckt. Wie geht das denn?

Captain America
2005-10-22, 00:40:43
SELECT tabelle1.username, tabelle2.Telefonnummer FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.username = tabelle2.username AND tabelle2.id = 1;

vorausgesetzt, die erste tel in tabelle2 hat immer id = 1

Gast
2005-10-22, 01:07:15
Na das wäre ja dann doch zu leicht ;) Natürlich hat das nicht immer die Nummer 1 und es kommt natürlich auch mehr als ein User vor.

Captain America
2005-10-22, 02:14:30
Na das wäre ja dann doch zu leicht ;) Natürlich hat das nicht immer die Nummer 1 und es kommt natürlich auch mehr als ein User vor.

:ugly2: Natürlich nicht. Lehrer tendieren da zu lustigen Auswüchsen.

SELECT
tabelle2.username, MIN(tabelle3.id) AS minid, tabelle3.id, tabelle3.Telefonnummer
FROM
tabelle1
LEFT JOIN
tabelle2 ON tabelle1.username = tabelle2.username
LEFT JOIN
tabelle2 AS tabelle3 ON tabelle2.id = tabelle3.id
GROUP BY
tabelle3.username

Und vergiss nicht: von Nichts kommt Nichts, Lieblings-SQL-Buch schnappen und lesen! GoTo SQL finde ich sehr gut.

Silpion
2005-10-22, 23:34:07
Hmm... soll die ID der Telefonnummer einfach nur ein Primärschlüssel sein, der die Telefonnummern durchnummeriert? Dann gibt es in dem Sinne gar keine "erste Telefonnummer", ein Benutzer hat einfach mehrere Nummern mit verschiedenen IDs. Die Telefonnummer mit der kleinsten ID als "erste Telefonnummer" zu nehmen würde ich nicht machen, lieber ein weiteres Attribut einführen, das mit true/false die bevorzugte Telefonnummer identifiziert.

Captain America
2005-10-23, 18:16:14
Hmm... soll die ID der Telefonnummer einfach nur ein Primärschlüssel sein, der die Telefonnummern durchnummeriert? Dann gibt es in dem Sinne gar keine "erste Telefonnummer", ein Benutzer hat einfach mehrere Nummern mit verschiedenen IDs. Die Telefonnummer mit der kleinsten ID als "erste Telefonnummer" zu nehmen würde ich nicht machen, lieber ein weiteres Attribut einführen, das mit true/false die bevorzugte Telefonnummer identifiziert.

Das ist sicherlich keine RL app, sondern eine Hausaufgabe. Gut zu erkennen daran, dass der Threadstarter keinen eigenen Lösungsansatz gepostet hat, und die Feld-Namen und Daten ausgedacht anmuten, Bezeichner und Gross / Kleinschreibung. ID ist wohl nicht als Primärschlüssel gedacht. Ansonsten: recht hast du, extra Feld wäre fein! :uup: