AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Bestimmt Datensätze anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmt Datensätze anzeigen

Ein Thema von Dumpfbacke · begonnen am 3. Jul 2013 · letzter Beitrag vom 5. Jul 2013
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: Bestimmt Datensätze anzeigen

  Alt 3. Jul 2013, 21:29
Suchst Du sowas?
Code:
select max(wert1) As Wert, id
from tabelle
where wert1 is not null
group by id
order by id
oder ist Null quasi größer als jedes beliebige Datum anzusehen und falls vorhanden soll die entsprechende ID nicht ausgegeben werden?

Unter Oracle könnte das eventuell so gehen:
Code:
select * from (
  select max(nvl(wert1,To_Date('31.12.9999')) As Wert, id
  from tabelle
  group by id
)
where wert < To_Date('31.12.9999')
order by id
Wenn der Inhalt einer Spalte Null ist, so ersetzt nvl dieses Null durch den angegebenen Wert. Kennt Firebird eine entsprechende Funktion? Wenn nicht, diese selber bauen.

Geändert von nahpets ( 3. Jul 2013 um 21:41 Uhr) Grund: Text um Frage ergänzt.
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 06:22
oder ist Null quasi größer als jedes beliebige Datum anzusehen und falls vorhanden soll die entsprechende ID nicht ausgegeben werden?

Unter Oracle könnte das eventuell so gehen:
Code:
select * from (
  select max(nvl(wert1,To_Date('31.12.9999')) As Wert, id
  from tabelle
  group by id
)
where wert < To_Date('31.12.9999')
order by id
Wenn der Inhalt einer Spalte Null ist, so ersetzt nvl dieses Null durch den angegebenen Wert. Kennt Firebird eine entsprechende Funktion? Wenn nicht, diese selber bauen.
Ja genau so soll es sein. Die ID 2 soll nicht ausgegeben sein. NULL soll größer sein als jedes Datum. Das ganze nur unter Firebird 2.5
Tanja
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 09:07
NVL() gibt es als UDF. Besser ist es aber die builtin Fuktion COALESCE() zu verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.356 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 15:17
Code:
select
  distinct
  id, (select max(y.wert) from test y where y.id = t.id) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
oder

Code:
select
  t.id
, max(t.wert) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
  group by t.id
Test natürlich in deinen Tabellennamen ändern.

Frank
Frank Reim

Geändert von dataspider ( 4. Jul 2013 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 20:05
Code:
select
  distinct
  id, (select max(y.wert) from test y where y.id = t.id) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
oder

Code:
select
  t.id
, max(t.wert) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
  group by t.id
Test natürlich in deinen Tabellennamen ändern.

Frank
Funktioniert leider beides nicht.
Tanja
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.356 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 21:03
Bei mir geht beides (siehe Anhang).
Aber da habe ich wohl sicher etwas falsch verstanden...

Und WERT muss natürlich WERT1 heißen, aber das hast du sicher schon bemerkt.

Frank
Angehängte Grafiken
Dateityp: jpg abfrage.jpg (118,9 KB, 9x aufgerufen)
Frank Reim

Geändert von dataspider ( 4. Jul 2013 um 21:05 Uhr)
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 21:32
Versuchs mal damit
SQL-Code:
select
  TT.ID,
  MAX(TT.MAXDATUM)
from
  (select T.ID,
          COALESCE(T1.WERT1, '9999-01-01') MAXDATUM
        from
          T
        ORDER BY
          T.ID) TT
GROUP by
  TT.ID
having
  MAX(TT.MAXDATUM) < '9999-01-01'
Edit:
@dataspider
Deine Querys funktionieren auch, sind aber teurer.
Alexander

Geändert von alex517 ( 4. Jul 2013 um 21:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.356 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Bestimmt Datensätze anzeigen

  Alt 5. Jul 2013, 12:05
Deine Querys funktionieren auch, sind aber teurer.
Deine Lösung ist echt sauber!

Frank
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz