Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Join sortieren (https://www.delphipraxis.net/34864-join-sortieren.html)

mr_chrome 29. Nov 2004 14:24


Join sortieren
 
Hallo,

ich habe mal wieder ein Datenbankproblem.
Ich fülle ein DBGrid mit Daten aus drei Tabellen. Der SQL-Befehl des DataSets ist nach folgendem Prinzip:

SQL-Code:
SELECT a.id, a.bezeichnung, b.bezeichnung, c.bezeichnung
  FROM TableA a
    INNER JOIN TableB b
      ON a.table2id = b.id
        INNER JOIN TableC c
          ON b.table3id = c.id
Die Abfrage funktioniert ohne Probleme.
Ich möchte nun die Datenmenge durch Klick auf die Titelleiste der entsprechenden Spalte sortieren.
Die Prozedur hierfür funktioniert fehlerfrei bei DataSets ohne Joins.
Ich füge an den SelectSQL des Datasets einfach "ORDER BY" + den entsprechenden Spaltennamen, und nach bedarf "DESC" an.
Bei diesem Join hab' ich jedoch das Problem, dass ich 3 Spalten namens "Bezeichnung" habe und die Sortierung mittels "ORDER BY tabelle.feld" durchgeführt werden müsste.
Meine Frage nun, gibt es irgendeine Möglichkeit beim Klick auf den Spaltennamen die jeweilige Tabelle bzw. den Alias des Feldes herauszufinden?
Gibt es andere herangehensweisen?
Ich hoffe, ich konnte mein Problem einigermaßen verständlich beschreiben :-)

Dank und Grüsse im Vorraus,
Thomas

Sharky 29. Nov 2004 14:36

Re: Join sortieren
 
Hai mr_chrome,

mal so ein Schuss ins Blaue.... Versuche es doch mal so:

SQL-Code:
SELECT a.id, a.bezeichnung AS bez_a, b.bezeichnung AS bez_b, c.bezeichnung AS bez_c
  FROM TableA a
    INNER JOIN TableB b
      ON a.table2id = b.id
        INNER JOIN TableC c
          ON b.table3id = c.id

Jasocul 29. Nov 2004 14:39

Re: Join sortieren
 
Bei Oracle geht auch ein order by über den Spalten-Index:
z.B.: order by 1
für den ersten Spaltennamen.
Ob das auch bei anderen DBs geht, weiß ich nicht.

mr_chrome 29. Nov 2004 14:53

Re: Join sortieren
 
@Jasocul:
Das ist die Lösung! Geht auch beim Interbase.
Ich dachte mir schon, dass die Lösung mal wieder viel einfacher ist als ich dachte :-)

@Sharky:
Das funktioniert leider auch nicht, hatte ich auch schon probiert.
Aber wie gesagt, die Lösung ist einfacher als angenommen.

Viele Dank,
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz