Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 30.09.08 12:34 
Hi, Delpher,

mit dem folgenden SQL-Befehl kann ich die einzelnen Anzahlen ausgeben lassen.
Ich möchte aber auch gern eine Summe bilden können. Diese soll in einer showmessage-Meldung zu sehen sein.

Wer kann dabei helfen?
Mein bisheriger Befehl ist:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
SQL.Text := format('select distinct B.KLASSE, count(*) as ANZAHL from "%s" B ' +
                  'where B.NAME <> '''' and B.TITEL = :BAkt ' +
                  'group by B.KLASSE', [TbBuecher.tablename]);
        Parambyname('BAkt').asstring := QBuchstamm.fieldbyname('TITEL').asstring;


Vieelen Dank, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 30.09.08 12:43 
Moin,

wovon soll denn die Summe gebildet werden? Vom Prinzip sieht das so aus:

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
SELECT DISTINCT
  B.KLASSE,
  Count(*) As Anzahl,
  Sum(Feld) As Summe,
FROM
  Tabelle As B
WHERE
  B.Name <> '' AND
  B.Titel = 'irgendwas'
GROUP BY
  B.Klasse,
  TbBuecher.Tablename

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 30.09.08 13:08 
@Jan: Die letzte Zeile hast Du etwas unüberlegt übernommen. :mrgreen:
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 30.09.08 13:20 
Gewundert hatte ich mich schon, aber das mag am Hunger vor der Mittagspause gelegen haben ;)

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 30.09.08 13:44 
Hi, ene,

so schnell hatte ich keine Antwort erwartet, deshalb habe ich erst jetzt nachgesehen..

Tja, ich wollte eigentlich die einzelnen Anzahlen (!) aufsummieren, [wie] geht das??

Danke, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 30.09.08 13:51 
Soll das eine "laufende Summe" sein oder einfach die Summe aller Anzahlen? Das 2. wäre ja auch gleich die Anzahl ohne Gruppierung. Für eine laufende Summe fehlt mir grad eine Idee :(

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 30.09.08 13:55 
Hi, Jan,

es soll die Summe der Anzahlen sein.

Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 30.09.08 13:58 
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
SELECT DISTINCT
  B.KLASSE,
  Count(*) As Anzahl,
  (SELECT Count(*) FROM Tabelle) As Summe,
FROM
  Tabelle As B
WHERE
  B.Name <> '' AND
  B.Titel = 'irgendwas'
GROUP BY
  B.Klasse

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 30.09.08 14:27 
hi, Jan,

ich komme noch nicht klar - wohl wegen der Parameter - siehe oben.

Kannst du da noch mal helfen?

Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 30.09.08 14:35 
Willst Du nur die Summe oder die einzelnen Anzahlen zzgl. der Gesamtsumme?
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 30.09.08 14:50 
Ist ein Komma zuviel

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
SELECT DISTINCT
  B.KLASSE,
  Count(*) As Anzahl,
  (SELECT Count(*) FROM Tabelle) As Summe
FROM
  Tabelle As B
WHERE
  B.Name <> '' AND
  B.Titel = 'irgendwas'
GROUP BY
  B.Klasse

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 30.09.08 15:04 
Müsste die Where-Klausel nicht auch im Subquery auftauchen?

[edit]Anderer Vorschlag (ungetestet):
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
SELECT 
  B.KLASSE,
  Count(1As Anzahl, 1 AS RF
FROM
  Tabelle As B
WHERE
  B.Name <> '' AND
  B.Titel = 'irgendwas'
GROUP BY
  B.Klasse
UNION
  SELECT
    'Gesamt',
    Count(1AS Anzahl, 2 AS RF
  FROM Tabelle 
  WHERE
    Name <> '' AND
    Titel = 'irgendwas'
ORDER BY RF, B.Klasse
[/edit]
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 30.09.08 16:32 
Du möchtest die Anzahl der einzelnen Titel pro Klasse haben?
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
SELECT
  B.KLASSE,
  B.TITEL,
  COUNT(*) AS ANZAHL
FROM
  Tabelle B
GROUP BY
  B.KLASSE,
  B.TITEL


Du möchtest die Summe der Anzahl aller Titel pro Klasse haben?
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
SELECT
  B.KLASSE,
  COUNT(*) AS ANZAHL
FROM
  Tabelle B
GROUP BY
  B.KLASSE


Du möchtest die Summe der Anzahl aller Titel aller Klassen haben?
ausblenden SQL-Anweisung
1:
2:
3:
4:
SELECT
  COUNT(*) AS ANZAHL
FROM
  Tabelle B


Oder möchtest Du was ganz anderes?
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 30.09.08 17:32 
Hallo,

danke erst noch mal für eure guten Ideen!

Ich gebe jetzt an, was ich bisher codiert hatte:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
leihanz := 0;
  with QBuecher2 do
  begin
    Close; SQL.Clear;
      SQL.Text := format('select count(*) as Anzahl from "%s" S ' +
                         'where S.TITEL = :p1 and S.KLASSE <> ''''', [TbBuecher.tablename]);
        Parambyname('p1').asstring := dbedit1.text;
    Open;
    leihanz := fields[0].asinteger;


Dann kam der zweite befehl, den ich schon angegeben hatte:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
SQL.Text := format('select distinct B.KLASSE, count(*) as ANZAHL from "%s" B ' +  
                  'where B.NAME <> '''' and B.TITEL = :BAkt ' +  
                  'group by B.KLASSE', [TbBuecher.tablename]);  
        Parambyname('BAkt').asstring := QBuchstamm.fieldbyname('TITEL').asstring;


Die Aufgabe ist also, dass ich möglichst beide Befehle in einer Anweisung habe, also lieber Robert, ich möchte die Auflistung, wer ein bestimmtes Buch hat, und wie oft das Buch insgesamt ausgeliehen ist-möglichst in einem Statement.

Vielen Dank für weitere Mühe,
Detlef

_________________
ut vires desint, tamen est laudanda voluntas
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 30.09.08 17:50 
user profile iconD. Annies hat folgendes geschrieben:
[...] ich möchte die Auflistung, wer ein bestimmtes Buch hat, und wie oft das Buch insgesamt ausgeliehen ist-möglichst in einem Statement. [...]

Da wäre es natürlich sehr hilfreich, wenn Du uns mal die Tabellenstruktur erläutern würdest. Aus welchen Feldern nimmst Du die Informationen?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 30.09.08 17:59 
Hallo Detlef,

hast Du mein Statement von hier mal ausprobiert?

Gruß Detlef ;)
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 30.09.08 18:12 
user profile iconDeddyH hat folgendes geschrieben:
[...] hast Du mein Statement von hier mal ausprobiert? [...]

Auch da wird es schwierig zu ersehen, wer welches Buch ausgeliehen hat... :mrgreen:
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 30.09.08 18:14 
Das ist richtig, aber aus dem Ausgangsstatement auch nicht zu erkennen.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 30.09.08 19:16 
Hi,

es ist wichtig, welche Klasse das Buch wie oft ausgeliehen hat, z.B.
10a hat es 25 mal und 10b hat es 23 mal. Dann möchte ich auch (nur per
showmessage) ausgeben, dass es 48 mal ausgeliehen ist. Reichen euch diese
Angaben?

Gruß, Detlef

@Deddy: deinen Befehl habe ich noch nicht probiert, weil ich mit den Zahlen nichts
anfangen kann, also mit der 1 z.B. .

_________________
ut vires desint, tamen est laudanda voluntas
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 30.09.08 19:25 
user profile iconD. Annies hat folgendes geschrieben:
[...] es ist wichtig, welche Klasse das Buch wie oft ausgeliehen hat, z.B.
10a hat es 25 mal und 10b hat es 23 mal. Dann möchte ich auch (nur per
showmessage) ausgeben, dass es 48 mal ausgeliehen ist. Reichen euch diese
Angaben? [...]

Nein.

Zitat:
@Deddy: deinen Befehl habe ich noch nicht probiert, weil ich mit den Zahlen nichts
anfangen kann, also mit der 1 z.B. .

Das sind Konstanten.