🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Abfrage mit Count
Abfrage mit Count
Guten Morgen liebe forum-Mitglieder,
ich komme mal wieder nicht weiter mit meinen Bas-Abfragen.
Ich habe zwei Tabellen. Eine Tabelle "Angebot" enthält die Spalten Angebots-Nr. (Primärschlüssel), Datum, Kunden-Nr. Die zweite Tabelle "Positionen" enthält die einzelnen Positionen zum jeweiligen Angebot und den Punkt ob der jeweilige Artikel gekauft wurde oder nicht. Diese Tabellen sind über die Angebots-Nr. über eine 1:n Beziehung miteinander verbunden.
Ich möchte nun aus meinen Datensätzen wissen wieviele Angebote gibt es und wieviele Artikel wurden gekauft. Einfach nur eine Anzahl zu jeder Frage. Ich bekomme das in Einzelabfragen auch über die Syntax
SELECT COUNT( "Angebots-Nr." ) AS "Anzahl Angebote" FROM "Angebot"
hin. Nun möchte ich diese beiden Abfragen aber in einer kombinieren. Dass heißt eine Zahl für Anzahl Angebote und eine Zahl für Anzahl Käufe. Ich komme jedoch mit dem JOIN-Befehl nicht klar. Beziehungsweise habe ich es mit dem Assistenten versucht und ich bekomme immer mehrere Zeilen, da es zu jedem Angebot mehrere Positionen gibt und auch mit einer Gruppierung werden die Angebote nicht mehr zusammengefasst.
Über jeden Tipp freue ich mich!
Viele Grüße,
Lizzy
ich komme mal wieder nicht weiter mit meinen Bas-Abfragen.
Ich habe zwei Tabellen. Eine Tabelle "Angebot" enthält die Spalten Angebots-Nr. (Primärschlüssel), Datum, Kunden-Nr. Die zweite Tabelle "Positionen" enthält die einzelnen Positionen zum jeweiligen Angebot und den Punkt ob der jeweilige Artikel gekauft wurde oder nicht. Diese Tabellen sind über die Angebots-Nr. über eine 1:n Beziehung miteinander verbunden.
Ich möchte nun aus meinen Datensätzen wissen wieviele Angebote gibt es und wieviele Artikel wurden gekauft. Einfach nur eine Anzahl zu jeder Frage. Ich bekomme das in Einzelabfragen auch über die Syntax
SELECT COUNT( "Angebots-Nr." ) AS "Anzahl Angebote" FROM "Angebot"
hin. Nun möchte ich diese beiden Abfragen aber in einer kombinieren. Dass heißt eine Zahl für Anzahl Angebote und eine Zahl für Anzahl Käufe. Ich komme jedoch mit dem JOIN-Befehl nicht klar. Beziehungsweise habe ich es mit dem Assistenten versucht und ich bekomme immer mehrere Zeilen, da es zu jedem Angebot mehrere Positionen gibt und auch mit einer Gruppierung werden die Angebote nicht mehr zusammengefasst.
Über jeden Tipp freue ich mich!
Viele Grüße,
Lizzy
Re: Abfrage mit Count
Hallo Lizzy,
Du musst die Tabelle gruppieren.
Beispiel:
oder
Du musst die Tabelle gruppieren.
Beispiel:
Code: Alles auswählen
SELECT COUNT(*) AS "Anzahl", "Angebots-Nr."
FROM "Positionen"
GROUP BY "Angebots-Nr."
ORDER BY "Angebots-Nr."
Code: Alles auswählen
SELECT COUNT(*) AS "Anzahl", "Angebots-Nr."
FROM "Positionen"
WHERE "Gekauft" = True
GROUP BY "Angebots-Nr."
ORDER BY "Angebots-Nr."
Re: Abfrage mit Count
Hallo Lizzy,
so ganz verstanden habe ich nicht, warum Du die Tabelle "Angebot" in der Abfrage hast. Sollen sämtliche Angebote gezählt werden? Sollen die Angebote gezählt werden, die auf einen Kunden zutreffen?
Ich schreibe einmal zur Tabelle "Positionen" eine Abfrage auf, die erst einmal sämtliche "Artikel" zählt und dann nur die Artikel, die bei "gekauft" ein 'true' haben.
Damit hast Du beide Zählungen in einer Übersicht stehen.
Schau einmal unter "Korrelierte Unterabfrage" im Handbuch nach.
Gruß
Robert
so ganz verstanden habe ich nicht, warum Du die Tabelle "Angebot" in der Abfrage hast. Sollen sämtliche Angebote gezählt werden? Sollen die Angebote gezählt werden, die auf einen Kunden zutreffen?
Ich schreibe einmal zur Tabelle "Positionen" eine Abfrage auf, die erst einmal sämtliche "Artikel" zählt und dann nur die Artikel, die bei "gekauft" ein 'true' haben.
Code: Alles auswählen
SELECT "a"."Angebots-Nr.", COUNT("a"."Artikel") AS "Angebotsanzahl", (SELECT COUNT("Artikel") FROM "Positionen" WHERE "gekauft" = True AND "Angebots-Nr." = "a"."Angebots-Nr.") AS "Anzahl gekauft" FROM "Positionen" AS "a" GROUP BY "a"."Angebots-Nr."
Schau einmal unter "Korrelierte Unterabfrage" im Handbuch nach.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Abfrage mit Count
Guten Morgen Peter und Robert,
Danke für Eure schnelle Rückmeldung. Wir kommen der Sache auch schon näher. Hier mein aktueller Code:
SELECT COUNT("Positionen"."Angebots-Nr.") AS "Anzahl Angebote", COUNT ("Positionen"."Kauf") AS "Anzahl Kauf"
FROM "Positionen"
WHERE "Kauf" = True
GROUP BY "Angebots-Nr."
ORDER BY "Angebots-Nr."
In der Spalte Anzahl Angebote wird eine 4 gezählt und in Spalte Kauf wird auch 4 gezählt. Ich habe aber insgesamt 5 Angebote aber nur 1 Angebot in dem 4 Artikel verkauft wurden, in meiner Datenbank hinterlegt. Zur Erklärung, diese Abfrage soll eine allgemeine Übersicht über das Verkaufsgeschehen geben, also wieviele Angebote geschrieben vs. in wievielen Fällen (Angebote) kam es zum Kauf (unabhängig von der Anzahl der Artikelmenge). Das Ergebnis muss momentan mit meinen Beispieldatensätzen lauten: 5 Angebote, 1 Verkauf (mit 4 Artikeln)
Unter Anzahl Angebote soll deshalb die Anzahl der Angebote gezählt werden, die geschrieben wurden, unabhängig ob es zum Kauf kam oder nicht. Einfach wieviele Datensätze sind in der Datenbank? Unter Anzahl Kauf steht die Anzahl von Angeboten, die in irgendeiner Form zum Verkauf führten.
Meine Tabellen sehen dazu so aus:
Angebot
Angebots-Nr. (verknüpft mit Angebots-Nr. in Tab. Positionen)
Datum
Kunden-Nr. (verknüpft mit tabelle Kundendaten; 1:n Bez.)
Betreuer
Positionen
automatische ID
Angebots-Nr. (verknüpft mit Angebots-Nr. in Tab. Angebot; 1:n)
ArtikelNr. (verknüpft mit ArtikelNr. in Tab. Artikel; 1:n Bez.)
Anzahl
Kauf
Ich habe versucht hier mit OUTER JOIN zu arbeiten, aber da ich ein kompletter Neueinsteiger bin (SQL + Datenbanken) arbeite ich mich in kleinen Schritten voran
Deshalb großes Danke für eure Hilfe!
Einen schönen Start in den Tag von Lizzy.
Danke für Eure schnelle Rückmeldung. Wir kommen der Sache auch schon näher. Hier mein aktueller Code:
SELECT COUNT("Positionen"."Angebots-Nr.") AS "Anzahl Angebote", COUNT ("Positionen"."Kauf") AS "Anzahl Kauf"
FROM "Positionen"
WHERE "Kauf" = True
GROUP BY "Angebots-Nr."
ORDER BY "Angebots-Nr."
In der Spalte Anzahl Angebote wird eine 4 gezählt und in Spalte Kauf wird auch 4 gezählt. Ich habe aber insgesamt 5 Angebote aber nur 1 Angebot in dem 4 Artikel verkauft wurden, in meiner Datenbank hinterlegt. Zur Erklärung, diese Abfrage soll eine allgemeine Übersicht über das Verkaufsgeschehen geben, also wieviele Angebote geschrieben vs. in wievielen Fällen (Angebote) kam es zum Kauf (unabhängig von der Anzahl der Artikelmenge). Das Ergebnis muss momentan mit meinen Beispieldatensätzen lauten: 5 Angebote, 1 Verkauf (mit 4 Artikeln)
Unter Anzahl Angebote soll deshalb die Anzahl der Angebote gezählt werden, die geschrieben wurden, unabhängig ob es zum Kauf kam oder nicht. Einfach wieviele Datensätze sind in der Datenbank? Unter Anzahl Kauf steht die Anzahl von Angeboten, die in irgendeiner Form zum Verkauf führten.
Meine Tabellen sehen dazu so aus:
Angebot
Angebots-Nr. (verknüpft mit Angebots-Nr. in Tab. Positionen)
Datum
Kunden-Nr. (verknüpft mit tabelle Kundendaten; 1:n Bez.)
Betreuer
Positionen
automatische ID
Angebots-Nr. (verknüpft mit Angebots-Nr. in Tab. Angebot; 1:n)
ArtikelNr. (verknüpft mit ArtikelNr. in Tab. Artikel; 1:n Bez.)
Anzahl
Kauf
Ich habe versucht hier mit OUTER JOIN zu arbeiten, aber da ich ein kompletter Neueinsteiger bin (SQL + Datenbanken) arbeite ich mich in kleinen Schritten voran

Deshalb großes Danke für eure Hilfe!
Einen schönen Start in den Tag von Lizzy.
Re: Abfrage mit Count
Hallo Lizzy,
Da Du in den Bedingungen "Kauf" = True stehen hast werden nur die Datensätze gezählt, bei denen natürlich ein Kauf erfolgreich gelaufen ist. Da zu jedem dieser Datensätze eine Angebots-Nr. gehört kommt natürlich bei beiden die gleiche Anzahl raus. COUNT() zählt nur die Felder, in denen etwas drin steht - Deine Abfrage würde ohne Gruppierung 4 Zeilen ergeben - also beide Count-Anweisungen mit dem gleichen Ergebnis.
Die Sortierung braucht hier überhaupt nicht zu stehen, da Du ja schließlich nur einen Datensatz zeigst.
Wenn Du 5 Angebote gelistet haben willst, muss erst einmal die Bedingung raus:
Da Du nur die unterschiedlichen Nummer hast ergibt das jetzt 5 Angebote. Für das eine Angebot, bei dem (mehrere) Käufe erfolgt sind, muss jetzt eine 1 erscheinen:
Jetzt möchtest Du das eine Angebot neben den 5 gesamten Angeboten sehen:
Gruß
Robert
Code: Alles auswählen
SELECT COUNT("Positionen"."Angebots-Nr.") AS "Anzahl Angebote", COUNT ("Positionen"."Kauf") AS "Anzahl Kauf"
FROM "Positionen"
WHERE "Kauf" = True
GROUP BY "Angebots-Nr."
ORDER BY "Angebots-Nr."
Die Sortierung braucht hier überhaupt nicht zu stehen, da Du ja schließlich nur einen Datensatz zeigst.
Wenn Du 5 Angebote gelistet haben willst, muss erst einmal die Bedingung raus:
Code: Alles auswählen
SELECT COUNT("Positionen"."Angebots-Nr.") AS "Anzahl Angebote"
FROM "Positionen"
GROUP BY "Angebots-Nr."
Code: Alles auswählen
SELECT COUNT("Positionen"."Angebots-Nr.") AS "AngeboteMitKauf"
FROM "Positionen"
WHERE "Kauf" = True
GROUP BY "Angebots-Nr."
Code: Alles auswählen
SELECT COUNT("Positionen"."Angebots-Nr.") AS "Anzahl Angebote",
(SELECT COUNT("Positionen"."Angebots-Nr.")
FROM "Positionen"
WHERE "Kauf" = True
GROUP BY "Angebots-Nr.") AS "AngeboteMitKauf"
FROM "Positionen"
GROUP BY "Angebots-Nr."
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Abfrage mit Count
Hallo Robert,
danke schon einmal für deine Hilfe. Leider hat das nicht so richtig geklappt. Ich hänge einen screen shot mit an die Nachricht.
Es werden die einzelnen Positionen aus einem Angebot gezählt und nicht die Angebotsnummern. In dem screenshot sieht man das unten die 5 Datensätze angezeigt werden. Ich hätte eben gern diese "5" unter Anzahl Angebote zu stehen und "4" bei Angebote mit Kauf. Es gibt also immer nur eine Zeile bei dieser Abfrage.
Ich vermute, dass ich die Angebotsnummern aus der Tabelle 'Angebote' zählen muss. Das schaffe ich ja auch mit einer einzelnen Abfrage. Und das ich dann aus der Tabelle 'Positionen' die Kaufhäcken zähle. Das alles mit dem Join-Befehl. Aber da komme ich wie gesagt nicht weiter.
mein Ergnis soll so aussehen:
Anzahl Angebote Anzahl Angebote mit Kauf
5 4
Hast du noch eine Idee?
viele Grüße,
Ulrike
danke schon einmal für deine Hilfe. Leider hat das nicht so richtig geklappt. Ich hänge einen screen shot mit an die Nachricht.
Es werden die einzelnen Positionen aus einem Angebot gezählt und nicht die Angebotsnummern. In dem screenshot sieht man das unten die 5 Datensätze angezeigt werden. Ich hätte eben gern diese "5" unter Anzahl Angebote zu stehen und "4" bei Angebote mit Kauf. Es gibt also immer nur eine Zeile bei dieser Abfrage.
Ich vermute, dass ich die Angebotsnummern aus der Tabelle 'Angebote' zählen muss. Das schaffe ich ja auch mit einer einzelnen Abfrage. Und das ich dann aus der Tabelle 'Positionen' die Kaufhäcken zähle. Das alles mit dem Join-Befehl. Aber da komme ich wie gesagt nicht weiter.
mein Ergnis soll so aussehen:
Anzahl Angebote Anzahl Angebote mit Kauf
5 4
Hast du noch eine Idee?
viele Grüße,
Ulrike
- Dateianhänge
-
- DB-notes.odp
- (64.83 KiB) 249-mal heruntergeladen
Re: Abfrage mit Count
Hallo Ulrike,
ich kehre einmal zu einem vorhergehenden Post in diesem Thread zurück:
Damit hast Du die Beziehung zu den Angebotsnummern bei dem Kauf.
Einfacher wäre es, wenn Du eine Beispieldatenbank statt einer Präsentationsdatei anhängen würdest. Das geht merkwürdigerweise in dieser Liste nicht so einfach. Du musst so eine Datei entweder packen oder einfach die Dateiendung auf *.zip ändern.
Gruß
Robert
ich kehre einmal zu einem vorhergehenden Post in diesem Thread zurück:
Code: Alles auswählen
SELECT "a"."Angebots-Nr.", COUNT("a"."Angebots-Nr.") AS "Angebotsanzahl", (SELECT COUNT("Angebots-Nr.") FROM "Positionen" WHERE "Kauf" = TRUE AND "Angebots-Nr." = "a"."Angebots-Nr.") AS "Anzahl gekauft" FROM "Positionen" AS "a" GROUP BY "a"."Angebots-Nr."
Einfacher wäre es, wenn Du eine Beispieldatenbank statt einer Präsentationsdatei anhängen würdest. Das geht merkwürdigerweise in dieser Liste nicht so einfach. Du musst so eine Datei entweder packen oder einfach die Dateiendung auf *.zip ändern.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.