Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL sortierung / "eigne Definition" (https://www.delphipraxis.net/131390-sql-sortierung-eigne-definition.html)

manfred_h 24. Mär 2009 10:03

Datenbank: Firbird • Version: 2.1 • Zugriff über: Fibplus 6.50

SQL sortierung / "eigne Definition"
 
Hallo zusammen

ist es möglich eine eigne Sortierreinfolge zu verwenden?

In der DB sind folgende Werte:
CH
P
VP
S
T

Diese sollten nach folgendem kriterium sortiert werden.
P
VP
S
T
CH

bin für Tipps dankbar.
Manfred

mkinzler 24. Mär 2009 10:16

Re: SQL sortierung / "eigne Definition"
 
Dafür müsstest du eine eigene Collation anlegen

manfred_h 24. Mär 2009 10:20

Re: SQL sortierung / "eigne Definition"
 
Danke für Deine schnelle Antwort mkinzler.

Werde versuchen dies in dem Fall im Report "auszuwerten" anstelle in der Dataset.

Shalom
Manfred

manfred_h 24. Mär 2009 15:52

Re: SQL sortierung / "eigne Definition"
 
zur Info

konnte es so Lösen:
SQL-Code:
SELECT
ID,
C_NO,

(CASE
   WHEN CABINET_G = 'P'
   THEN 1 ELSE 0 END ) CABINET_G_P,
(CASE
   WHEN CABINET_G = 'VP'
   THEN '2' ELSE 0 END ) CABINET_G_VP,
(CASE
   WHEN CABINET_G = 'S'
   THEN '3' ELSE 0 END ) CABINET_G_SEK,
(CASE
   WHEN CABINET_G = 'T'
   THEN '4' ELSE 0 END ) CABINET_G_T,
(CASE
   WHEN CABINET_G = 'CH'
   THEN '5' ELSE 0 END ) CABINET_G_CH
FROM MEMBER

WHERE
   ((MEMBER.CABINET_G IS NOT NULL )
   AND
      (C_NO = ?C_NO)
   )
ORDER BY CABINET_G_P DESC, CABINET_G_VP DESC, CABINET_G_SEK DESC, CABINET_G_T DESC, CABINET_G_CH DESC
Shalom
Manfred

Bernhard Geyer 24. Mär 2009 15:58

Re: SQL sortierung / "eigne Definition"
 
Ich würde aber eher eine neue Tabelle als Lookupliste erstellen. Ist flexibler und m.E. übersichtlicher als diese großen case-Anweisungen.

manfred_h 24. Mär 2009 16:22

Re: SQL sortierung / "eigne Definition"
 
Hallo Bernhard

Zitat:

Zitat von Bernhard Geyer
Ich würde aber eher eine neue Tabelle als Lookupliste erstellen. Ist flexibler und m.E. übersichtlicher als diese großen case-Anweisungen.

Danke für Deinen Hinweis. Die Daten benötige ich nur in 2 Reports ansonsten nicht ( in dieser Form ).
Deshalb denke ich es sollte ok sein.

Werde mich aber mit dem Thema ein wenig mehr befassen >> Tabelle als Lookuplist

Danke Dir aber für Deine Hilfe !

Shalom
Manfred

omata 24. Mär 2009 23:26

Re: SQL sortierung / "eigne Definition"
 
Was spricht gegen einen CASE-Verteiler?

SQL-Code:
SELECT ID, C_NO,
       CASE CABINET_G
         WHEN 'P' THEN 1
         WHEN 'VP' THEN 2
         WHEN 'S' THEN 3
         WHEN 'T' THEN 4
         WHEN 'CH' THEN 5
       END sort
FROM member
WHERE CABINET_G IS NOT NULL
  AND C_NO = ?C_NO
ORDER BY sort

manfred_h 25. Mär 2009 08:25

Re: SQL sortierung / "eigne Definition"
 
Zitat:

Zitat von omata
Was spricht gegen einen CASE-Verteiler?

SQL-Code:
SELECT ID, C_NO,
       CASE CABINET_G
         WHEN 'P' THEN 1
         WHEN 'VP' THEN 2
         WHEN 'S' THEN 3
         WHEN 'T' THEN 4
         WHEN 'CH' THEN 5
       END sort
FROM member
WHERE CABINET_G IS NOT NULL
  AND C_NO = ?C_NO
ORDER BY sort

Das sieht wirklich besser aus. Danke für Deinen Tipp.
Werde dies gleich Testen.

Shalom :dp:
Manfred

nahpets 25. Mär 2009 09:03

Re: SQL sortierung / "eigne Definition"
 
Hallo,

wie wäre es denn mit einer Erweiterung der Tabelle?
Code:
In der DB sind folgende Werte:
CH
P
VP
S
T

Diese sollten nach folgendem Kriterium sortiert werden.
P
VP
S
T
CH
Code:
CABINET_G, Reihenfolge
CH , 5
P , 1
VP , 2 
S , 3
T , 4
Dann sollte doch ein
SQL-Code:
SELECT ID, C_NO, CABINET_G
FROM member
WHERE CABINET_G IS NOT NULL
  AND C_NO = ?C_NO
ORDER BY Reihenfolge
ausreichen und beim Einfügen neuer Werte in die Tabelle ist keine Anpassung an Programmen oder Reports ... erforderlich.

manfred_h 25. Mär 2009 11:06

Re: SQL sortierung / "eigne Definition"
 
Zitat:

Zitat von nahpets
Hallo,
wie wäre es denn mit einer Erweiterung der Tabelle?

Die DB exisitiert schon und ist auf vielen Rechnern instaliert.
Änderungen an der DB möchte ich nur wenn unbedingt nötig durchführen.
Zitat:

keine Anpassung an Programmen oder Reports ... erforderlich.
Den Report bin ich am neu erstellen weswegen das ok währe.

Bei einer noch nicht exisiterenden DB finde ich Deine Lösung gut.
Danke für Deine Hilfe.

Shalom
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 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