Archiv verlassen und diese Seite im Standarddesign anzeigen : Mysql und joins
hayloft_ch
13-10-2004, 06:22
Ich habe eine Tabelle 1 mit einigen Werten, entscheidend sind die "aid" und die "bid"
Diese beiden ID's sind in zwei weiteren Tabellen auch vorhanden.
Tabelle1:
test_id
aid
bid
....
Tabelle2:
aid
name
...
Tabelle3:
bid
name
Ich möchte nun eine sortierte Liste (sortier nach den namen der Tabellen 2-3) aller Einträg in Tabelle1.
mit
select c.last_name,b.last_name FROM tabelle1 as a LEFT JOIN tabelle2 b ON a.aid=b.aid LEFT JOIN tabelle3 as c ON c.bid=a.bid;
erreich ich, dass mir alle Namen angezeigt werden, jeweils mit NULL in der Spalte der anderen Tabelle, was ich auch erwartet habe.
Nur bringt mich das irgendwie nicht weiter, was die Sortierung anbelangt..
Kann mir da jemand weiterhelfen?
mit "ORDER BY wert1, wert2" kannst du die ausgewählten Spalten sortieren.
Gruss
Roli
hayloft_ch
14-10-2004, 05:48
Dann wird aber leider erst nach dem wert1 danach nach dem wert2 sortiert.
Es müsste nach beidem gleichzeitig sortieren.
Vielleicht muss man meine Abfrage auch komplett umstellen oder es ist gar nicht möglich mit einer einzigen SQL-Abfrage.
quinte17
14-10-2004, 08:13
probier mal einen
ORDER BY concat(name1, name2)
greetz
wie stellst du dir das vor, dass 2 sachen gleichzeitig sortiert werden sollen???
kannst du da mal ein explizites beispiel bringen? (ich kann mir des nicht vorstellen)
hayloft_ch
14-10-2004, 12:24
War vielleicht ein wenig unklar ausgedrückt.
was bewirkt concat in dieser Situation? Für mich macht die Sortierung gar keinen Sinn mehr, wenn ich das so versuche.
Als Ausgabe meiner SQL-Abfrage habe ich ja sowas..
Meier NULL
Müller NULL
NULL Tester
Helfer NULL
Ich möchte nun, dass die Spalten zusammengefügt und nach beiden Spalten sortiert wird.
Oder eine grundsätzlich andere Lösung, wie ich die Namen aus den beiden Tabellen zusammenführe und dann über das Gesamte hinweg sortieren kann.
quinte17
14-10-2004, 12:55
kannst du noch ein ergebnis zu deinem beispiel liefern? wie des dann auschauen soll wenns sortiert ist... ich kann mir des nicht vorstellen nach 2 spalten Gleichzeitig... weil wenn ich sowas hab
a | 9
b | 8
c | 7
d | 6
stellt sich für jeden menschen die frage nach was ich sortiere:
1. ich kann nach der linken spalte sortieren und dann nach der rechten spalte
2. wie 1. nur andersrum
3. ich kann die linke und die rechte mit concat zusammenkleben, was dann als eine spalte gehandhabt wird, und dann sortieren...
ich weiß nicht wie du des meinst mit gleichzeitig sortieren, weil sowas ja nichtmal in der realen wellt funktioniert...
grüße
Bin auch ein wenig von der Aufgabenstellung verwirrt...
Ich verstehe es auch folgendermassen:
Du willst beide spalten zusammenfügen und nach dem zusammengefügten sortieren?
Dann wäre
<pre>
select concat(ifnull(spalte1,' '),ifnull(spalte2,' ')) from ...
order by concat(spalte1,spalte2);
</pre>
ein Ansatz.
NULL-Werte werden in ein Leerzeichen umgewandelt.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.