SQL-JOINs in VARIO 8: So verknüpfen Sie Ihre Daten clever miteinander
- Michael Hübner
- 6. Nov.
- 4 Min. Lesezeit

Wer regelmäßig in VARIO 8 arbeitet, weiß: In kaum einem anderen System stecken so viele wertvolle Informationen über Kunden, Aufträge und Artikel. Doch oft liegen diese Daten in unterschiedlichen Tabellen – und genau hier kommen JOINs ins Spiel.
Stellen Sie sich vor, Sie möchten wissen, welche Kunden in den letzten Monaten Belege erstellt haben, oder Sie möchten eine Liste aller Artikel, die in bestimmten Belegen vorkommen. Einzelne Tabellen reichen dafür nicht aus – erst durch die Verbindung mehrerer Tabellen entsteht das vollständige Bild.
Firebird SQL bietet dafür verschiedene Arten von JOINs, mit denen Sie Ihre Daten aus VARIO gezielt verknüpfen können. In diesem Beitrag schauen wir uns die wichtigsten JOIN-Typen an – anschaulich erklärt und mit echten Beispielen aus den VARIO-Tabellen BEK, BEP, ADR, ANS und ART.
INNER JOIN – Nur das, was wirklich zusammengehört
Beginnen wir mit dem INNER JOIN. Er verknüpft zwei Tabellen und zeigt nur die Datensätze, die in beiden vorkommen.
Ein klassisches Beispiel aus VARIO: Sie möchten alle Kunden sehen, die bereits mindestens einen Beleg (z. B. Angebot, Auftrag oder Rechnung) erstellt haben.
SQL-Beispiel:
SELECT
a.KUNDENNR,
a.NAME1 AS KUNDENNAME,
b.BELEGNR,
b.BELEGDATUM,
b.BELEGART
FROM ADR a
INNER JOIN BEK b ON b.ADR_ID = a.ID
ORDER BY a.NAME1;
Ergebnis: Sie sehen nur Kunden, zu denen es tatsächlich Belege gibt. Kunden ohne Beleg werden nicht angezeigt.
So eine Abfrage ist nützlich, wenn Sie z. B. aktive Kundenbeziehungen auswerten oder Umsatzstatistiken aufbauen möchten.
LEFT JOIN – Alle Kunden, auch ohne Beleg
Manchmal möchte man aber nicht nur die aktiven Kunden sehen, sondern alle, auch die, die (noch) keine Belege haben. Dafür verwenden wir den LEFT JOIN.
SQL-Beispiel:
SELECT
a.KUNDENNR,
a.NAME1 AS KUNDENNAME,
b.BELEGNR,
b.BELEGDATUM
FROM ADR a
LEFT JOIN BEK b ON b.ADR_ID = a.ID
ORDER BY a.NAME1;
Ergebnis: Alle Kunden werden angezeigt – auch jene, bei denen noch kein Beleg existiert. In diesen Fällen bleiben die Belegspalten leer (NULL).
Das ist besonders praktisch für Marketinglisten („Zeige mir alle Kunden – auch die ohne Auftrag“) oder für Datenpflege, wenn Sie prüfen möchten, welche Kunden bisher noch nichts bestellt haben.
RIGHT JOIN – Alle Belege, auch ohne zugehörigen Kunden
Der RIGHT JOIN ist im Prinzip das Gegenstück zum LEFT JOIN. Er zeigt alle Belege, auch wenn der zugehörige Kunde nicht (mehr) in der Adresstabelle existiert – etwa nach einer Datenbereinigung.
SQL-Beispiel:
SELECT
a.KUNDENNR,
a.NAME1 AS KUNDENNAME,
b.BELEGNR,
b.BELEGDATUM
FROM ADR a
RIGHT JOIN BEK b ON b.ADR_ID = a.ID
ORDER BY b.BELEGNR;
Ergebnis: Alle Belege werden angezeigt. Wenn zu einem Beleg keine Adresse mehr vorhanden ist, stehen die Kundeninformationen auf NULL.
Solche Fälle kommen in der Praxis tatsächlich vor, z. B. wenn alte Datensätze importiert oder Kundendatensätze gelöscht wurden.
FULL JOIN – Wenn Sie wirklich alles sehen möchten
In Firebird gibt es keinen direkten FULL OUTER JOIN, der alle Datensätze aus beiden Tabellen zurückgibt – egal, ob sie zueinander passen oder nicht. Aber man kann das ganz einfach mit einer Kombination aus LEFT JOIN und RIGHT JOIN erreichen:
SQL-Beispiel:
SELECT
a.KUNDENNR,
a.NAME1 AS KUNDENNAME,
b.BELEGNR
FROM ADR a
LEFT JOIN BEK b ON b.ADR_ID = a.ID
UNION
SELECT
a.KUNDENNR,
a.NAME1 AS KUNDENNAME,
b.BELEGNR
FROM ADR a
RIGHT JOIN BEK b ON b.ADR_ID = a.ID
ORDER BY KUNDENNR, KUNDENNAME;
Ergebnis: Sie sehen wirklich alle Kunden und alle Belege – auch solche, die keine Beziehung zueinander haben.Das kann hilfreich sein, wenn Sie Bestands- oder Vollständigkeitsprüfungen durchführen.
JOIN-Ketten: Vom Belegkopf bis zum Artikel
In der Praxis reicht es selten, nur zwei Tabellen zu verknüpfen.Oft möchten Sie die Belegköpfe (BEK) mit ihren Positionen (BEP) und den zugehörigen Artikeln (ART) kombinieren – z. B. um eine Liste aller verkauften Artikel pro Beleg zu erstellen.
SQL-Beispiel:
SELECT
b.BELEGNR,
p.POSI,
p.MENGE,
p.EINZELPREIS,
p.GESAMTPREIS,
art.ARTIKELNR,
art.ARTIKELBEZEICHNUNG1
FROM BEK b
INNER JOIN BEP p ON p.BEK_ID = b.ID
INNER JOIN ART art ON art.ID = p.ART_ID
ORDER BY b.BELEGNR, p.POSI;
Ergebnis: Jede Position eines Belegs wird mit den passenden Artikelinformationen angezeigt – ideal für Verkaufsstatistiken oder Detailauswertungen.
Ansprechpartner zur Adresse hinzufügen
Viele Firmen in VARIO haben einen oder mehrere Ansprechpartner. Diese stehen in der Tabelle ANS. Wenn Sie alle Adressen mit deren Ansprechpartnern sehen möchten, verwenden Sie wieder einen LEFT JOIN, damit auch Adressen ohne Ansprechpartner erscheinen.
SQL-Beispiel:
SELECT
a.KUNDENNR,
a.NAME1 AS ADRESSNAME,
ans.NAME AS ANSPRECHPARTNER,
ans.EMAIL,
ans.TELEFON
FROM ADR a
LEFT JOIN ANS ans ON ans.ADRESSNR = a.ADRESSNR
ORDER BY a.NAME1, ANSPRECHPARTNER;
Ergebnis: Sie sehen zu jeder Adresse den zugehörigen Ansprechpartner. Wenn kein Ansprechpartner vorhanden ist, bleibt die Zeile trotzdem sichtbar – mit leeren Ansprechpartnerfeldern.
Diese Abfrage eignet sich hervorragend, um z. B. Vertriebslisten oder CRM-Exports zu erstellen.
Tipps aus der Praxis
Nutzen Sie INNER JOIN, wenn Sie nur zusammengehörige Datensätze brauchen (z. B. Kunden mit Belegen).
Verwenden Sie LEFT JOIN, wenn Sie lückenlose Listen möchten – auch mit leeren Feldern.
Prüfen Sie bei jeder Verknüpfung, welches Feld der gemeinsame Bezug ist (z. B. ADR_ID bei Belegen, ADRESSNRbei Ansprechpartnern).
Fügen Sie ORDER BY hinzu, um Ihre Ergebnisse zu sortieren und leichter zu prüfen.
Arbeiten Sie in der VARIO-SQL-Konsole, um die Abfragen schrittweise zu testen – so lernen Sie am schnellsten, wie Ihre Daten miteinander verbunden sind.
Fazit
JOINs sind der Schlüssel, um in VARIO 8 das volle Potenzial Ihrer Daten zu nutzen. Ob Sie Kundenbeziehungen analysieren, Artikelbewegungen nachvollziehen oder Ansprechpartner übersichtlich darstellen möchten – mit den richtigen Verknüpfungen wird aus vielen Einzelinformationen ein klares Gesamtbild.
Im nächsten Teil unserer SQL-Reihe geht es um GROUP BY und Aggregatfunktionen – also darum, wie Sie Daten zusammenfassen, Summen bilden und Ihre Auswertungen in VARIO noch aussagekräftiger gestalten.