Hilfe bei Abfrage für Anfänger

ronin269

Benutzer
Beiträge
7
Hallo an alle,

ich habe folgende Frage:

Zwei relevante Tabellen in einer Firebird 2.5 Datenbank.

Tabelle Kunden und Beleg verbunden über die Adressnummer.

Ich würde gern wissen, welche Aufträge (Typ AU in Beleg) in einem bestimmten Zeitraum noch keinen Auftrag unter Ihrer Kundennummer hatten. Also die Kunden Neukunden sind.

Leider kann ich mit meinem Wissen die Aufgabe nicht lösen. Hat jemand einen Ansatz??
 
Werbung:
Code:
SELECT * FROM Kunden WHERE Adressnummer NOT IN ( SELECT Adressnummer FROM Beleg WHERE datum BETWEEN Zeitraum_Anfang AND Zeitraum_Ende)
Ich denke das kann man als Ansatz nehmen. Ich kenne Firebird nicht so gut es gäbe auch noch andere Wege.
 
Danke für die Hilfe!

So funktioniert es leider nicht. Ich bekomme 13944 Kunden :-) angezeigt, obwohl ich nur 60 Aufräge zb im Januar.

Ich glaube ich habe mich nicht richtig ausgedrückt.

Ich möchte wissen, welcher Kunde jetzt im Januar Neukunde ist, also noch nie einen Auftrag hatte.

Wenn ich 60 Aufträge im Januar habe, kann das Ergebnis nur kleiner oder gleich 60 sein, da auch Altkunden dabei sein dürfen.

Wenn ich zwei Abfragen machen würde

1. Zeige die Anzahl der Aufräge pro Adressnummern
2. Zeige die Adressnr der Aufträge für Januar

Wie kann ich dann beide Abfragen kombinieren, um nur die neuen im Januar zu bekommen?

Ich hoffe ich habe mich verständlich ausgedrückt;).

Ronin269
 
Dann poste mal die relevanten Spalten zu den Tabellen und Beispieldaten. Du schreibst das du Kunden ohne Auftrag suchst, wie können dann Neukunden schon Aufträge haben? Wenn sie schon Aufträge haben, wie finde ich dann raus ob sie Neukunde sind?
welche Aufträge (Typ AU in Beleg) in einem bestimmten Zeitraum noch keinen Auftrag unter Ihrer Kundennummer hatten.
Suchst du dann Aufträge im Januar, deren Kunde noch keinen Auftrag in einem Vormonat hatte? Ich rate jetzt nochmal ins Blaue:
Code:
 SELECT * FROM Kunden WHERE Adressnummer IN ( SELECT Adressnummer FROM Beleg WHERE datum BETWEEN Zeitraum_Anfang AND Zeitraum_Ende ) AND Adressnummer NOT IN ( SELECT Adressnummer FROM Beleg WHERE datum < Zeitraum_Anfang )
Wie gesagt, da ich Firebird nicht kenne nehme ich das simpelste SQL was mir einfällt.
 
Werbung:
Ich jetzt habe es etwas abgewandelt:

Code:
     SELECT * from Beleg WHERE  belegdat BETWEEN "gewünschter Zeitraum der als Neukunde zählt" and Adressnr  not IN ( SELECT Adressnr FROM Beleg where belegdat between "vor Neukunde"  )

Das zeigt mir alle Aufträge an (oder Kunden wenn durch Kunden ersetzt), welchen im vorherigen Zeitraum noch keinen Auftrag hatten. So sollte es sein.

Danke für die Hilfe und Lösung!
 
Zurück
Oben