Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird - SELECT mit MAX / MIN Abfrage der gefundenen IDs (https://www.delphipraxis.net/129778-firebird-select-mit-max-min-abfrage-der-gefundenen-ids.html)

mkinzler 25. Feb 2009 12:47

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Ich würde dann aber einen SmallInt nehem und keine Char
Btw: Warum ein VarChar(1)?

Tempdir 25. Feb 2009 12:52

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Ok, das war nur für Testzwecke. Danke für den Hinweis!

Billa 25. Feb 2009 12:57

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Noch ein kleiner Vorteil bei der Verwendung von Integer: die können später auch prima als Fremdschlüssel benutzt werden. Und sie sind nicht Zeichensatzabhängig ... Ich empfinde das "Fehlen" von Boolschen Feldern nicht als Nachteil. Aber das ist natürlich nicht zuletzt Geschmackssache...

Tempdir 25. Feb 2009 13:01

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Danke!

Zum Thema "Boolean-Domäne": Bringt das Vorteile?

DeddyH 25. Feb 2009 13:04

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Natürlich. Du kannst z.B. Werte checken und hast DB-einheitlich dieselben Grundlagen. Sollten sich diese ändern, musst Du nur die Domäne anpassen.

Billa 25. Feb 2009 13:07

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Grundsätzlich bringt das den Vorteil der leichteren Wart- und Lesbarkeit.
Einer Domäne kann man Bedingungen und Einschränkungen mitgeben.
Damit können schon beim Design falsche Feldinhalte vermieden werden.
Ausserdem kann man bei manchen System im Nachhinein den Datentyp einer
Domäne ändern. Also alle Felder auf einen Schlag!

Tempdir 16. Mär 2009 08:56

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Guten Morgen,

meine Frage betrifft das gleiche Problem wie hier diskutiert, allerdings diesmal für die Turbo-Datenbank (TurboDB).

Ich spreche meine Turbo-Datenbank mit den Delphi "TurboDB"-Komponenten an, unter anderem ein TDBQuery. Als SQL-Syntax gibt es anscheinend nur Local-SQL (wie auch immer die aussieht, finde leider keine Doku dazu).

Frage: Wie mache ich so eine Anfrage, damit sie auch mit der TDBQuery-Komponente und der TurboDB funktioniert:

SQL-Code:
SELECT first 1 * FROM tabelle WHERE field2 = 'TRUE' order by field1

Wäre für Tipps wie immer sehr dankbar!

DeddyH 16. Mär 2009 09:02

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Evtl. so?
SQL-Code:
SELECT * FROM tabelle
WHERE field1 =
   (SELECT MIN(field1)
    FROM Tabelle
    WHERE field2 = 'TRUE')

Tempdir 16. Mär 2009 09:28

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
Danke! Hab ich leider nicht zum Laufen bringen können, aber hab mittlerweile eine andere Lösung:

SQL-Code:
SELECT MAX(field1) FROM tabelle WHERE field2='TRUE'
Das doofe dabei, ich muss nochmal eine Anfrage starten um den Datensatz auszulesen. Kann man das auch in einem Zug machen wie in meinem vorherigen Beispiel oben? Es sollte halt am Ressourcenschonendsten sein.

DeddyH 16. Mär 2009 09:44

Re: Firebird - SELECT mit MAX / MIN Abfrage der gefundenen I
 
SQL-Code:
SELECT field1, <Feldliste>
FROM Tabelle
WHERE field2='TRUE'
GROUP BY field1, <Feldliste>
HAVING field1 = MAX(field1)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
Seite 2 von 3     12 3      

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