MYSQL Abfrage erweitern
Hi Leutz,
folgende Abfrage möchte ich dahingehend erweitern, das geprüft wird ob die Summe der Unterabfrage NULL ist und wenn ja soll der Datensatz nicht mit ausgegeben werden.
Bekomms nicht hin, bzw. Ergebnis ist immer falsch.
Danke für Hilfe!
folgende Abfrage möchte ich dahingehend erweitern, das geprüft wird ob die Summe der Unterabfrage NULL ist und wenn ja soll der Datensatz nicht mit ausgegeben werden.
SELECT DISTINCT tbl.fld AS Kunde, (
SELECT SUM(NETTO) FROM tbl WHERE fld = tbl.fld AND tbl.fld <2 AND fld !=1
) AS Summe
FROM tbl
INNER JOIN tbl ON tbl.fld = tbl.fld
ORDER BY Summe DESC
Danke für Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193025
Url: https://administrator.de/forum/mysql-abfrage-erweitern-193025.html
Ausgedruckt am: 22.12.2024 um 01:12 Uhr
11 Kommentare
Neuester Kommentar
Genau! HAVING anstatt WHERE! Irgendwann kann ich mir das auch vielleicht mal merken
@op:
Die mysql Doku hätte dir auch geholfen: http://dev.mysql.com/doc/refman/5.1/de/select.html
@op:
Die mysql Doku hätte dir auch geholfen: http://dev.mysql.com/doc/refman/5.1/de/select.html
Hallo,
vielleicht hilft ja das etwas. Ohne genauen Aufbau der Tabelle kann man da nur wage was schreiben.
Dabei werden die beiden Tabellen kunde_tbl und rechnung_tbl über die Kundennummer verbunden und nur die Datensätze benutzt, bei denen das Kriterium Rechnung nicht bezahlt erfüllt ist. Von diesen Datensätzen wird dann die Summe der Nettobeträge gebildet und zusätzlich falls gewünscht noch die Anzahl der offenen Rechnungen ausgegeben.
Es kommen also nur Kunden, die noch offene Rechnungen haben.
Gruß Jörg
vielleicht hilft ja das etwas. Ohne genauen Aufbau der Tabelle kann man da nur wage was schreiben.
SELECT k.kunde AS Kunde,
SUM(r.netto) AS Summe,
COUNT(r.rechnungsnummer) AS Anz_Offene_Rechnungen
FROM kunde_tbl AS k
INNER JOIN rechnung_tbl AS r ON k.kunde = r.kunde
WHERE "Kriterium Rechnung nicht bezahlt z.B. r.geldeingang IS NULL"
GROUP BY k.kunde
Dabei werden die beiden Tabellen kunde_tbl und rechnung_tbl über die Kundennummer verbunden und nur die Datensätze benutzt, bei denen das Kriterium Rechnung nicht bezahlt erfüllt ist. Von diesen Datensätzen wird dann die Summe der Nettobeträge gebildet und zusätzlich falls gewünscht noch die Anzahl der offenen Rechnungen ausgegeben.
Es kommen also nur Kunden, die noch offene Rechnungen haben.
Gruß Jörg
... so ein weiterer Versuch
Wobei die HAVING Klausel eigentlich unnötig sein müsste, wenn "r.status < 2 AND r.gs != 1" nur unbezahlte Rechnungen liefert.
Gruß Jörg
SELECT k.kunde AS Kunde,
SUM(r.netto) AS Offene_Netto_Summe,
COUNT(r.rechnungsnummer) AS Anz_Offene_Rechnungen
FROM kundenstamm AS k
INNER JOIN rechnung AS r ON k.myid = r.kd_nummer
WHERE r.status < 2
AND r.gs != 1
GROUP BY k.kunde
HAVING SUM(r.netto) IS NOT NULL
Wobei die HAVING Klausel eigentlich unnötig sein müsste, wenn "r.status < 2 AND r.gs != 1" nur unbezahlte Rechnungen liefert.
Gruß Jörg
... also Dein SELECT kann ohne die GROUP BY Klausel schon mal nicht funktionieren.
ich habe gerade bei mir Deine Anfrage mit anderen Tabellen und Spalten nachgebaut und bei mir läuft es!?!
Bei mir nimmt er halt alle Zeilen der Tabelle customer_order_line wo r.state = 'Cancelled' und r.catalog_type_db = 'INV' ist. Summiert das Produkt aus "r.base_sale_unit_price * r.price_conv_factor * r.buy_qty_due" für jeden Kunden auf und liefert das Ergebnis nach Spalte 2 Absteigend sortiert.
Gruß Jörg
ich habe gerade bei mir Deine Anfrage mit anderen Tabellen und Spalten nachgebaut und bei mir läuft es!?!
SELECT k.customer_id AS Kunde,
SUM(r.base_sale_unit_price * r.price_conv_factor * r.buy_qty_due) AS Netto_Summe,
COUNT(DISTINCT r.order_no) AS Geplatzte_Auftraege
FROM customer_info k
INNER JOIN customer_order_line r ON k.customer_id = r.customer_no
WHERE r.state = 'Cancelled'
AND r.catalog_type_db = 'INV'
GROUP BY k.customer_id
ORDER BY 2 DESC
Bei mir nimmt er halt alle Zeilen der Tabelle customer_order_line wo r.state = 'Cancelled' und r.catalog_type_db = 'INV' ist. Summiert das Produkt aus "r.base_sale_unit_price * r.price_conv_factor * r.buy_qty_due" für jeden Kunden auf und liefert das Ergebnis nach Spalte 2 Absteigend sortiert.
Gruß Jörg