Hallo!
Als Tester stößt man hin und wieder auf eine SQL-Anweisung, die wie folgt geschrieben ist:
SELECT customer.NAME,
invoice.ID_INVOICE
FROM TABLE_MY_FINE_CUSTOMER AS customer
LEFT OUTER JOIN TABLE_MY_FINE_INVOICE AS invoice
ON invoice.ID_CUSTOMER = customer.ID_CUSTOMER
WHERE customer.COUNTRY_CODE = 'US'
AND invoice.DATE_INVOICE = CURRENT_DATE
;
In diesem vereinfachten und anonymisierten Beispiel sollen alle Kunden aus den USA ausgewählt werden, die eine Rechnung mit dem heutigen Datum als Rechnungsdatum erhalten haben.
Der hier als LEFT OUTER JOIN beschriebene Join ist ein INNER JOIN, da eine Bedingung für die verknüpfte Tabelle in der WHERE-Klausel verwendet wird. Natürlich kann so eine funktionsrichtige, aber unverständlich geschriebene SQL-Anweisung während der Entwicklung der SQL-Anweisung passieren. Dennoch wäre es hilfreich, sie umzugestalten, damit die nächste Person, die sich die SQL-Anweisung ansieht, den LEFT OUTER JOIN nicht falsch interpretiert. Denn was in einem so einfachen Beispiel ersichtlich ist, ist beim Joinen von zehn oder mehr Tabellen nicht mehr zu erkennen.
SELECT customer.NAME,
invoice.ID_INVOICE
FROM TABLE_MY_FINE_CUSTOMER AS customer
INNER JOIN TABLE_MY_FINE_INVOICE AS invoice
ON invoice.ID_CUSTOMER = customer.ID_CUSTOMER
AND invoice.DATE_INVOICE = CURRENT_DATE
WHERE customer.COUNTRY_CODE = 'US'
;
Viel Spaß beim Testen und Entwickeln!