Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Suche Hilfe bei der Erstellung eines SQL-Statements (https://www.delphipraxis.net/72389-suche-hilfe-bei-der-erstellung-eines-sql-statements.html)

barnti 29. Jun 2006 16:17

Datenbank: SQL Server 2000 • Zugriff über: Hibernate

Suche Hilfe bei der Erstellung eines SQL-Statements
 
Hallo liebe Gemeinde,

lang ist es her. Umsomehr freue ich mich mal wieder reinzuschnuppern. Natürlich habe ich auch eine Frage.

Ich möchte folgende DB-Abfrage formulieren:

SQL-Code:
SELECT
   *
FROM
   Konto k, Kalender kal
WHERE
   k.id = kal.id
Diese Abfrage gibt mir alle Tage mit Datum, Wochentag und Stand des Kontos zurück. Das sieht dann so aus:
SQL-Code:
TAG DATUM     STUNDENKONTINGENT
Mo, 03.07.2006  2
Di, 04.07.2006  3
Mi, 05.07.2006  2
Do, 06.07.2006  5
Fr, 07.07.2006  4
Sa, 08.07.2006  0
So, 09.07.2006  0

Mo, 10.07.2006  1
Di, 11.07.2006  2
Mi, 12.07.2006  0     <------------
Do, 13.07.2006  2
Fr, 14.07.2006  3
Sa, 15.07.2006  3
So, 16.07.2006  2
Meine Frage: Wenn ein Wochentag(also nicht Sa, So) keine Stunden mehr hat(siehe Markierung <----), sollen weitere Zeilen nicht mehr erscheinen. Das heißt ich möchte die Query dahin einschränken...

Hat jemand eine Idee?

alzaimar 29. Jun 2006 16:36

Re: Suche Hilfe bei der Erstellung eines SQL-Statements
 
Delphi-Quellcode:
SELECT
   *
FROM
   Konto k, Kalender kal
WHERE
   k.id = kal.id
and kal.datum <
(select min (k.datum)
   from kalender k
        join konto t on k.id = k.id
  where datepart (day,k.datum) in (1,2,3,4,5)
    and t.stundenkontingent = 0
)
Soll heißen: Zeige alle Zeilen, deren Datum kleiner ist als das kleinste Datum innerhalb der Woche ('Datepart ...'), dessen Stundenkontingent 0 ist.

Bitte prüfe die Rückgabewerte von DatePart, und die Einstellung 'Set DateFirst' (so ähnlich).

barnti 30. Jun 2006 07:06

Re: Suche Hilfe bei der Erstellung eines SQL-Statements
 
Hallo alzaimar,

das werde ich nächste Woche mal testen. Danke schon einmal. Ich muss jetzt zum Fan Fest. Fußi geht bald los.

Viel Spaß beim Viertelfinale,

omata 30. Jun 2006 16:27

Re: Suche Hilfe bei der Erstellung eines SQL-Statements
 
Hallo barnti,

hier nochmal eine korrigierte Version...

SQL-Code:
SELECT CASE DATEPART(dw, datum)
         WHEN 1 THEN 'Mo'
         WHEN 2 THEN 'Di'
         WHEN 3 THEN 'Mi'
         WHEN 4 THEN 'Do'
         WHEN 5 THEN 'Fr'
         WHEN 6 THEN 'Sa'
         WHEN 7 THEN 'So'
       END tag,
       CONVERT(VARCHAR, datum, 104) datum,
       stundenkontingent
FROM konto k
INNER JOIN kalender kal
  ON k.id = kal.id
WHERE kal.datum < (SELECT MIN(k.datum)
                   FROM kalender k
                   INNER JOIN konto t
                     ON k.id = t.id
                   WHERE DATEPART(dw, k.datum) IN (1,2,3,4,5)
                     AND t.stundenkontingent = 0)
ORDER BY datum
Gruss
Thorsten


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