Query gesucht
Kai
- datenbank
0 misterunknown0 misterunknown0 Kai
0 dedlfix0 hotti0 Pitter0 hotti
Hi,
etwas Grundsätzliches:
ID|Name
--------------
1 |Klaus
--------------
2 |Tom
--------------
3 |Susi
--------------
ID|Kids |Alter
---------------
1 |Pete |10
---------------
1 |Frank |15
---------------
1 |Nick |18
---------------
3 |Linda |9
---------------
3 |Alex |12
---------------
Aufgabe: Liste alle Namen und deren zugehörige Kinder mit Alter auf.
Ergebnismenge und deren Formatierung:
1 Klaus
1 Pete 10
1 Frank 15
1 Nick 18
2 Tom
3 Susi
3 Linda 9
3 Alex 12
Gibt es hierzu eine Query, die das generieren kann oder braucht man hier auf jeden Fall eine weitere "Sprache", die dann diese Ausgabe vornimmt?
Gruß, Kai
Moin,
Aufgabe: Liste alle Namen und deren zugehörige Kinder mit Alter auf.
SELECT Namen.ID, Namen.Name, Kinder.Kids, Kinder.Alter FROM Namen LEFT JOIN Kinder ON Namen.ID = Kinder.ID
(ungetestet)
Grüße Marco
Moin,
SELECT Namen.ID, Namen.Name, Kinder.Kids, Kinder.Alter FROM Namen LEFT JOIN Kinder ON Namen.ID = Kinder.ID
Das bringt natürlich nicht die gewünschte Formatierung (wer lesen kann ist klar im Vorteil). So wie du es beschreibst, bin ich der Meinung, dass es wirklich nicht ohne eine Programmiersprache bzw. Stored Procedures geht. Eine einfache Query wird IMHO nicht zum Ergebnis führen.
Grüße Marco
Das bringt natürlich nicht die gewünschte Formatierung (wer lesen kann ist klar im Vorteil). So wie du es beschreibst, bin ich der Meinung, dass es wirklich nicht ohne eine Programmiersprache bzw. Stored Procedures geht. Eine einfache Query wird IMHO nicht zum Ergebnis führen.
Das ist eben genau die Frage. Ich habe schon soviel in mysql gelernt und gesehen, was ich nicht vermutet hatt (unter anderem auch in der Ausgabe der Daten-die ist durchaus beeinflussbar!), dass ich nicht verwundert wäre, wenn einer der Superprofis hier doch noch ne Lösung präsentiert.
Kai
Tach!
Aufgabe: Liste alle Namen und deren zugehörige Kinder mit Alter auf.
Das geht so nicht, weil du je nach Fall (Name vs. Kind) unterschiedliche Datensätze haben möchtest. Du kannst nur eine einheitliche Ergebnismenge erzeugen.
Du könntest nun überlegen, ob du das Alter-Feld generell hinzunimmst und es beim Namen eben NULL ist. Das wäre dann auch dein Unterscheidungsmerkmal zwischen den beiden Fällen. Das Konzept geht aber so nicht mehr auf, wenn du noch mehr unterschiedliche Felder abragen möchtest.
dedlfix.
hai Kai,
Gibt es hierzu eine Query, die das generieren kann oder braucht man hier auf jeden Fall eine weitere "Sprache", die dann diese Ausgabe vornimmt?
Nicht nur der Formatierung wegen. Wenn die Ausgabe gepuffert werden kann, ist es sogar von Vorteil, anstelle eines Join die Sub-Daten über ein prepared Statement abzurufen und mit einer Callback-Funktion auszugeben.
Hotti
Hi,
etwas Grundsätzliches:
ich hätte auch eine "grundsätzliche" Anmerkung!
Das Feld "id" in der Tabelle "Namen" -> OK!
Das Feld "id" in der Tabelle "Kinder" -> Unsinn!
Warum?
In der Namenstabelle, die ich allerdings "Eltern" nennen würde, ist die "id" eindeutig bzw. leicht verständig. Aber in der Tabelle der Kinder absolut nicht, denn sie drückt eher eine Referenz auf die Eltern aus. Insofern würde ich diese Spalte auf id_namen oder namen-id o.s.ä. benennen.
Das versteht man sofort ohne Erklärung und Du selbst auch noch in 3 Jahren!
Gruß Pitter
Tabelle Namen
ID|Name
1 |Klaus
2 |Tom
3 |Susi
Tabelle Kinder
ID|Kids |Alter
1 |Pete |10
1 |Frank |15
1 |Nick |18
3 |Linda |9
3 |Alex |12
hi,
ich hätte auch eine "grundsätzliche" Anmerkung!
Das Feld "id" in der Tabelle "Namen" -> OK!
Das Feld "id" in der Tabelle "Kinder" -> Unsinn!
Sehe ich nicht so dogmatisch. Vielmehr kann bei gleichen Feldnamen die Schreibweise eines etwaigen Joins mit using(id)
vereinfacht werden.
Problematisch ist eher der Feldname 'Alter' ;)
Hotti