Zaehler in Abfrage
Moderator: Moderatoren
Zaehler in Abfrage
Kann man in einer Abfrage eine Zaehlerspalte generieren lassen?
Ich habe im Hilfetext dass hier gefunden:
SELECT COUNT(*) AS Anzahl
und in meine Abfrage eingebaut:
SELECT "COUNT(*)" AS "NR", "KDNR" FROM "Tabelle1" WHERE ....
und bekomme auch eine Spalte. Aber sie ist leer.
mfG
Ich habe im Hilfetext dass hier gefunden:
SELECT COUNT(*) AS Anzahl
und in meine Abfrage eingebaut:
SELECT "COUNT(*)" AS "NR", "KDNR" FROM "Tabelle1" WHERE ....
und bekomme auch eine Spalte. Aber sie ist leer.
mfG
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Re: Zaehler in Abfrage
Hallo Eia,
und wie siehts aus wenn Du die Anführungszeichen bei "COUNT(*)" weglässt ?
Count ist eine Aggregatfunktion von SQL und gibt die Anzahl der gefundenen Datensätze zurück.
Übrigens habe ich festgestellt, wenn Du SQL mittels Abfrage in SQL-Ansicht erstellen... bearbeitest, kannst Du die Anführungszeichen auch weglassen, die werden von Base an den erforderlichen Stellen hinzugefügt. Der Code
müsste deshalb zum Erfolg führen. Aber, Count can only be used as single column!
und wie siehts aus wenn Du die Anführungszeichen bei "COUNT(*)" weglässt ?
Count ist eine Aggregatfunktion von SQL und gibt die Anzahl der gefundenen Datensätze zurück.
Übrigens habe ich festgestellt, wenn Du SQL mittels Abfrage in SQL-Ansicht erstellen... bearbeitest, kannst Du die Anführungszeichen auch weglassen, die werden von Base an den erforderlichen Stellen hinzugefügt. Der Code
Code: Alles auswählen
SELECT COUNT(*) AS NR, FROM Tabelle1 WHERE ....
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Re: Zaehler in Abfrage
Hallo Peter
Mhhh.
Etwas weiter oben im Hilfetext steht noch:
SELECT ROW()
aber "function not supported, yet"
mfG
Ja, diese COUNT-Funktion ist offenbar nicht für das gedacht, wofür ich es wollte. Man kann damit die Anzahl der Datensätze ermitteln und ich wollte ja eine Zeilennummerierung.pmoegenb hat geschrieben:Count can only be used as single column!
Mhhh.
Etwas weiter oben im Hilfetext steht noch:
Gibt es auch eine Liste derjenigen Funktionen, die so angewendet werden können? Ich hab mal probiert:Wenn Sie andere Funktionen verwenden möchten, die nicht im Listenfeld aufgeführt werden, dann müssen Sie diese unter Feld eintragen, sie erscheinen dann automatisch in der Zeile Funktion
SELECT ROW()
aber "function not supported, yet"
mfG
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Re: Zaehler in Abfrage
Hallo Eia,
wenn Du mir im persönlichen Bereich Deine E-Mail-Adresse bekannt gibst, kann ich Dir eine PDF-Datei senden, die die möglichen Klauseln samt Beispiele für die geläufigen Datenbanken enthält.
wenn Du mir im persönlichen Bereich Deine E-Mail-Adresse bekannt gibst, kann ich Dir eine PDF-Datei senden, die die möglichen Klauseln samt Beispiele für die geläufigen Datenbanken enthält.
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Re: Zaehler in Abfrage
Hallo Eia,
wenn Du eine "eindeutige" Spalte in Deiner Tabelle hast, könntest Du folgendermaßen eine Nummerierung erhalten: (das Beispiel orientiert sich an einer eindeutigen Spalte "ID")
siehe auch:
viewtopic.php?f=8&t=13671&p=54963&hilit ... mer#p54963
Gruß Barlee
wenn Du eine "eindeutige" Spalte in Deiner Tabelle hast, könntest Du folgendermaßen eine Nummerierung erhalten: (das Beispiel orientiert sich an einer eindeutigen Spalte "ID")
Code: Alles auswählen
Select Count (*) FROM [Deine_Tabelle] as X WHERE X.ID < [Deine_Tabelle].ID)+1 as lfd, ...
viewtopic.php?f=8&t=13671&p=54963&hilit ... mer#p54963
Gruß Barlee
Re: Zaehler in Abfrage
Vielen Dank für den Tipp.
Leider kann ich das nicht auf meine Situation übertragen, bekomme stets die Meldung "ungültige Syntax".
Dazu muss ich sagen, dass ich ganz schwach in Sachen SQL bin und mich schon schwertue mit dem Anbringen der Anführungszeichen und Klammern an den richtigen Stellen.
Angenommen, ich habe eine Tabelle "Tabelle1", aus der ich das Feld "KDNR" in meine Abfrage übernehmen will, aber nur für die Sätze, bei denen das Feld "PLZ" zwischen "70000" und "79999" liegt.
Das Feld "KDNR" ist eindeutig, enthält aber Buchstaben (Geht das, oder muss es ein numerisches Feld sein? Könnte ich als Feld "ID" mit einem Zähler auch noch einfügen).
Wie müsste die Syntax da aussehen?
mfG
Leider kann ich das nicht auf meine Situation übertragen, bekomme stets die Meldung "ungültige Syntax".
Dazu muss ich sagen, dass ich ganz schwach in Sachen SQL bin und mich schon schwertue mit dem Anbringen der Anführungszeichen und Klammern an den richtigen Stellen.
Angenommen, ich habe eine Tabelle "Tabelle1", aus der ich das Feld "KDNR" in meine Abfrage übernehmen will, aber nur für die Sätze, bei denen das Feld "PLZ" zwischen "70000" und "79999" liegt.
Das Feld "KDNR" ist eindeutig, enthält aber Buchstaben (Geht das, oder muss es ein numerisches Feld sein? Könnte ich als Feld "ID" mit einem Zähler auch noch einfügen).
Wie müsste die Syntax da aussehen?
mfG
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Zaehler in Abfrage
nehme die Vergleichsbedingung BETWEEN
War es das?
Code: Alles auswählen
... WHERE "KDNR" BETWEEN '70000' AND '79999'
Re: Zaehler in Abfrage
Ne, nicht eigentlich. Das mit dem WHERE allein würde ich schon hinkriegen.
Die Frage ist, ob man einen Zähler als Zusatzspalte in die Abfrage bekommt.
Also wenn von 1000 Datensätzen durch WHERE-Einschränkung 100 übgrigbleiben, soll in der Abfrage eine zusätzliche Spalte mit einem Zähler von 1 bis 100 vorhanden sein.
mfG
Die Frage ist, ob man einen Zähler als Zusatzspalte in die Abfrage bekommt.
Also wenn von 1000 Datensätzen durch WHERE-Einschränkung 100 übgrigbleiben, soll in der Abfrage eine zusätzliche Spalte mit einem Zähler von 1 bis 100 vorhanden sein.
mfG
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Zaehler in Abfrage
Einen Zähler bekomme ich über eine temporäre Tabelle so hin:
Hilft das?
Code: Alles auswählen
SELECT name, mailorder_id, datum , ( SELECT COUNT(*) FROM mailorder "TEMPTAB" WHERE TEMPTAB.mailorder_id < WERTETAB.mailorder_id ) + 1 as Zaehler FROM mailorder "WERTETAB"
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Zaehler in Abfrage
Ehrlich gesagt, verstehe ich nicht, was da abgeht.
Wird hier eine temporäre Tabelle namens TEMPTAP erstellt? Und eine weitere mit Namen WERTETAB?
Und was bedeutet dabei TEMPTAB.mailorder_id?
Und WERTETAB.mailorder_id?
Und was wird warum um 1 erhöht?
mfG
Code: Alles auswählen
( SELECT COUNT(*) FROM mailorder "TEMPTAB" WHERE TEMPTAB.mailorder_id < WERTETAB.mailorder_id )
Und was bedeutet dabei TEMPTAB.mailorder_id?
Und WERTETAB.mailorder_id?
Und was wird warum um 1 erhöht?
mfG
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Zaehler in Abfrage
Nein, es wird keine Tabelle erstellt.
Die Namen in Anführungszeichen sind Aliasnamen.
Durch den SELECT in der Klammer werden die bereits ausgegebenen gezählt (plus Eins), und in der Spalte "Zaehler" geschrieben.
WERTETAB ist dann der Alias für die auszuwertende Tabelle...
Werde Licht?
Die Namen in Anführungszeichen sind Aliasnamen.
Durch den SELECT in der Klammer werden die bereits ausgegebenen gezählt (plus Eins), und in der Spalte "Zaehler" geschrieben.
WERTETAB ist dann der Alias für die auszuwertende Tabelle...
Werde Licht?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Zaehler in Abfrage
Hallo Eia,
Das Ergebnis ist folgendes:
zum gewünschten Ergebnis.
Hoffe, Du kommst weiter...
Gruß Barlee
Ja, das geht. Betrachte einmal die Ausgangstabelle "Tab_lfd": Folgende Abfrage selektiert Datensätze mit der PLZ zwischen 71000 und 79100 und fügt ein zusätzliche Spalte "lfd" an die Ergebnistabelle an. Wichtig ist, dass die Einschränkung "between 71000 and 79100 " auch in der Unterabfrage angewendet wird:Die Frage ist, ob man einen Zähler als Zusatzspalte in die Abfrage bekommt.
Also wenn von 1000 Datensätzen durch WHERE-Einschränkung 100 übgrigbleiben, soll in der Abfrage eine zusätzliche Spalte mit einem Zähler von 1 bis 100 vorhanden sein.
Code: Alles auswählen
select
"a"."ID",
"a"."KDNR",
"a"."PLZ",
"a"."lfd"
from
(
select
"ID",
"KDNR",
"PLZ",
(
select
count(KDNR) from "Tab_lfd" as "x"
where x.PLZ between 71000 and 79100
and "x"."KDNR" < "Tab_lfd"."KDNR"+1
) as "lfd"
from "Tab_lfd"
where "PLZ" between 71000 and 79100
) "a"
Das ist unerheblich - wie auch das Beispiel zeigt. Einziges "Problem" könnte sein, dass der Zähler sich an der alphabetischen Sortierung der KDNR orientiert. Somit wird zwar korrekt die Anzahl der Ergebnisdatensätze gezählt, der Zähler kann aber "durcheinander" sein. In solchem Fall führt ein abschließendes .Das Feld "KDNR" ist eindeutig, enthält aber Buchstaben (Geht das, oder muss es ein numerisches Feld sein? ... )=
Code: Alles auswählen
order by "lfd"
Hoffe, Du kommst weiter...
Gruß Barlee
Re: Zaehler in Abfrage
Vielen Dank, dass Ihr Euch solche Mühe mit mir gebt.
Nachdem es leider immer noch nicht recht in meinen Kopf geht, was da passiert mit den verschachtelten SELECT's, und was "a" und "x" sind, habe ich es jetzt einfach abgetippt, die Namen stimmen ja überein, und siehe da - es funktioniert! Es scheint sich dabei um einen echten Kraftakt von OO zu handeln, dachte zuerst, das Programm wolle sich verabschieden, aber dann kam's doch noch.
Ich werd also nochmal drüber schlafen und mir alles nochmal in Ruhe ansehen und hoffen, dass der Groschen noch fällt.
mfG
Nachdem es leider immer noch nicht recht in meinen Kopf geht, was da passiert mit den verschachtelten SELECT's, und was "a" und "x" sind, habe ich es jetzt einfach abgetippt, die Namen stimmen ja überein, und siehe da - es funktioniert! Es scheint sich dabei um einen echten Kraftakt von OO zu handeln, dachte zuerst, das Programm wolle sich verabschieden, aber dann kam's doch noch.
Ich werd also nochmal drüber schlafen und mir alles nochmal in Ruhe ansehen und hoffen, dass der Groschen noch fällt.
mfG