[MySQL] Abfrage über 2 Tabellen

partner2000

Grünschnabel
Hallo,

unser Steuerberater braucht die Umsätze aller EU-Länder (ohne Deutschland) für einen vorgegeben Zeitraum (z.B. für das 1. Quartal 2016). Kundendaten, Rechnungen und Umsätze sind in einer MySQL-DB gespeichert.
Da unser Programmierer derzeit Langzeitferien macht und ich mich leider nicht sonderlich auskenne, suche ich auf diesem Weg Unterstützung. Ich wollte eine SQL-Abfrage über phpMyAdmin ausführen, komme aber leider nicht weiter.

Es gibt in der DB eine Tabelle user in der u.a. die Länderkennungen (z.B. AT) in der Spalte land gespeichert sind.

In einer zweiten Tabelle rech sind in der Spalte rech_dat die Rechnungsdaten in der Form JJJJ-MM-TT gespeichert.

Ich brauche eine Ausgabe aller Rechnungen im Zeitraum [von - bis] aller EU-Kunden oder z.B. aus Österreich (AT).

Ich hatte es mit der folgenden Abfrage probiert ... ist aber offensichtlich fehlerhaft.

SELECT user, land, rech_dat,rech_nr
FROM rech, user
WHERE rech_dat BETWEEN '2016-01-01' AND '2016-12-31'
and land <> 'DE'
ORDER BY land ASC

Ich hoffe sehr auf eure freundliche Unterstützung. Herzlichen Dank im Voraus!

Frank
 
Hi

was mindestens noch fehlt:
Nicht alle User kombiniert mit allen Rechnungen hernehmen und dann per WHERE filtern, sondern pro Rechnung nur den einen betroffenen User nehmen. Wenn recht eine Spalte kunde hat, mit Kundennummern, und user eine Spalte id mit der Nummer, einfach den WHERE-Teil um ein "and kunde=userid" ergänzen
 
Hi,

Primär die Rechnungstabelle selektieren und bei Select im Where alle Kunden ausschließen, die in Deutschland sind

SELECT
rech.Datum,
rech...,
FORM tabelle_rechnung AS rech

LEFT JOIN kund AS kund
ON kund.kund_id = rech.kund_id

WHERE rech.kund_id in (SELECT kund1.kund_id
FROM tabelle_kunden AS kund1
WHERE kund1.LAND_ID <> 'DE')
AND rech.datum between '2016-01-01' AND '2016-01-31'

Damit bekommst du nur die Rechnungen für Kunden nicht in Deutschland
Der LEFT JOIN brauchst du falls du noch Felder aus der Kundentabelle brauchst
 

Neue Beiträge

Zurück