Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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:
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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Di 30.09.08 12:43
Moin,
wovon soll denn die Summe gebildet werden? Vom Prinzip sieht das so aus:
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
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 30.09.08 13:08
@Jan: Die letzte Zeile hast Du etwas unüberlegt übernommen. 
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Di 30.09.08 13:58
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 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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
|
Verfasst: Di 30.09.08 14:35
Willst Du nur die Summe oder die einzelnen Anzahlen zzgl. der Gesamtsumme?
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Di 30.09.08 14:50
Ist ein Komma zuviel
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
|
Verfasst: Di 30.09.08 15:04
Müsste die Where-Klausel nicht auch im Subquery auftauchen?
[edit]Anderer Vorschlag (ungetestet):
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(1) As Anzahl, 1 AS RF FROM Tabelle As B WHERE B.Name <> '' AND B.Titel = 'irgendwas' GROUP BY B.Klasse UNION SELECT 'Gesamt', Count(1) AS Anzahl, 2 AS RF FROM Tabelle WHERE Name <> '' AND Titel = 'irgendwas' ORDER BY RF, B.Klasse | [/edit]
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 30.09.08 16:32
Du möchtest die Anzahl der einzelnen Titel pro Klasse haben?
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?
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?
SQL-Anweisung 1: 2: 3: 4:
| SELECT COUNT(*) AS ANZAHL FROM Tabelle B |
Oder möchtest Du was ganz anderes?
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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:
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:
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
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 30.09.08 17:50
D. 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
|
Verfasst: Di 30.09.08 17:59
Hallo Detlef,
hast Du mein Statement von hier mal ausprobiert?
Gruß Detlef 
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 30.09.08 18:12
DeddyH hat folgendes geschrieben: | [...] hast Du mein Statement von hier mal ausprobiert? [...] |
Auch da wird es schwierig zu ersehen, wer welches Buch ausgeliehen hat... 
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 30.09.08 18:14
Das ist richtig, aber aus dem Ausgangsstatement auch nicht zu erkennen.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 30.09.08 19:25
D. 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.
|
|
|