AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL oder nicht SQL ...
Thema durchsuchen
Ansicht
Themen-Optionen

SQL oder nicht SQL ...

Ein Thema von mschaefer · begonnen am 10. Jan 2007 · letzter Beitrag vom 19. Feb 2007
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: SQL oder nicht SQL ...

  Alt 10. Jan 2007, 17:50
Doch, das geht schon.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#12

Re: SQL oder nicht SQL ...

  Alt 10. Jan 2007, 18:32
Mit welcher Version arbeitest Du denn (FB 5+) ???
Martin Schaefer
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

Re: SQL oder nicht SQL ...

  Alt 10. Jan 2007, 18:43
Zitat von mschaefer:
Mit welcher Version arbeitest Du denn (FB 5+) ???
ne, bin schon bei FB V8.0.

Denkanstoß :

SQL-Code:
SET TERM ^ ;

CREATE PROCEDURE MWSTSATZSP8 (
    mwstsatz smallint,
    datum date)
returns (
    mwstsatz_out decimal(15,2))
as
BEGIN
  SELECT FIRST 1 MWSTWERT FROM MWST8 WHERE
    (MWSTSATZ=:MWSTSATZ) AND (ABDATUM <= :DATUM)
  ORDER BY ABDATUM DESC INTO :MWSTSATZ_OUT;
  IF (MWSTSATZ_OUT IS NULL) THEN MWSTSATZ_OUT = 0;
  SUSPEND;
END^

SET TERM ; ^
Gruß
Hansa
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#14

Re: SQL oder nicht SQL ...

  Alt 11. Jan 2007, 09:56
Ich liebe Stored Procs

Edit:
Hey, FB V8.0 ist schon raus? Muss ich gleich mal testen.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#15

Re: SQL oder nicht SQL ...

  Alt 12. Feb 2007, 13:14
Moin, moin,

die Stored-Proc hat dann auch tatsächlich mit V2 gelaufen, aber Hansa ist ja einige Zeitzonen voraus.

GROUP BY - Frage die 3.

Da es oben schon um Group by ging mach ich jetzt keinen neuen Thread auf. Habe eine Abfrage auf eine Datei wo Umsätze per Monat ausgelesen werden sollen. Also etwas vereinfacht folgendes:

TABELLE "Umsatz" hat die Felder "Monat", "Umsatz"

SQL-Code:
SELECT
     SUM (Umsatz) AS Monatsumsatz
    ,COUNT (Umsatz) AS Umsatzanzahl
     FROM Tabelle Umsatz
     GROUP BY Monat
Funktionier auch soweit, dass die Umsätze nach Monaten aufsummiert werden.

...
Jan 0 0 // erscheint leider nicht
...
Mai 7200 23
Juni 9400 34
Juni 12000 40
...

Wenn jetzt aber einen Monat kein Umsatz war, dann erscheint dieser Monat nicht in der Gruppe mit einer Nullzeile, sondern wird einfach ausgelassen. Kann man dieses der Abfrage abgewöhnen.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL oder nicht SQL ...

  Alt 12. Feb 2007, 16:05
Nur wenn du den Monat per Outer-Join hinzufügst
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: SQL oder nicht SQL ...

  Alt 12. Feb 2007, 19:49
Ich glaube eher, er meint einen Monat ohne Umsatz. Ist denn in der Tabelle dann überhaupt ein Monat hinterlegt ? Glaubs eher nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL oder nicht SQL ...

  Alt 12. Feb 2007, 19:52
Ja deshalb ja dazujoinen
Markus Kinzler
  Mit Zitat antworten Zitat
alex517

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

Re: SQL oder nicht SQL ...

  Alt 12. Feb 2007, 20:16
Hallo Martin,

Zitat von mschaefer:
Wenn jetzt aber einen Monat kein Umsatz war, dann erscheint dieser Monat nicht in der Gruppe mit einer Nullzeile, sondern wird einfach ausgelassen. Kann man dieses der Abfrage abgewöhnen.
Wenn keine "Monate" da sind, können auch keine in der Ergebnismenge auftauchen.
Aber man kann sich ja welche "basteln".

SQL-Code:
CREATE PROCEDURE SP_JJMM (
    VON_JJ INTEGER,
    VON_MM INTEGER,
    BIS_JJ INTEGER,
    BIS_MM INTEGER)
RETURNS (
    JAHR INTEGER,
    MONAT INTEGER)
AS
begin
  JAHR = VON_JJ;
  MONAT = VON_MM;
  WHILE (JAHR * 100 + MONAT <= BIS_JJ * 100 + BIS_MM) DO
  BEGIN
    suspend;
    MONAT = MONAT +1;
    if (MONAT > 12) THEN
    BEGIN
      MONAT = 1;
      JAHR = JAHR +1;
    END

  END
end
Dann hat man im Ergebnis auch den Monat:
SQL-Code:
SELECT
  JJMM.JAHR,
  JJMM.MONAT,
  COALESCE(SUM (U.BETRAG), 0) AS Monatsumsatz,
  COUNT (U.ID) AS Umsatzanzahl
FROM
  SP_JJMM(2005, 10, 2007, 5) JJMM
  left outer join Umsatz U on (U.JAHR = JJMM.JAHR and U.MONAT = JJMM.MONAT)
GROUP BY
  JJMM.JAHR,
  JJMM.MONAT


alex
Alexander
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: SQL oder nicht SQL ...

  Alt 12. Feb 2007, 20:22
Jetzt mal langsam. Hierum gehts :

Zitat von Hansa:
Ist denn in der Tabelle dann überhaupt ein Monat hinterlegt ?
Ich gehe von Betriebsferien im Juli und Aug. aus. Wär doch gut.

Sieht die Tabelle nun so aus :

Delphi-Quellcode:
1 11,22
2 45,99
3 546,00
4 444,50
5 55,00
6 9,55
7 0
8 0
9 2343,66
...
oder so :

Delphi-Quellcode:
1 11,22
2 45,99
3 546,00
4 444,50
5 55,00
6 9,55
9 2343,66
...
Wollte den zweiten Fall ansprechen und nicht den ersten. Sind schon mal Betriebsferien, dann wird wohl keiner einmal im Monat trotzdem hingehen alles hochfahren und irgendwie den Monaten 7 und 8 in der DB sagen : Umsatz war alles 0.

In einem solchen Fall würde ein Join nichts nützen. Martin, sage mal welcher der beiden Fälle der reale ist. Passt gut zur Ursprungsfrage : ersteren würde ich mit SQL lösen, den zweiten nicht.

Ah, Alex. Muss ich in Ruhe mal angucken. Das hier bleibt trotzdem jetzt so stehen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:27 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