Hallo zusammen,
ich hatte mit dem
JOIN sogar Komplettabstürze. Ich denke die werden verursacht, wenn man ein komplexes SQL-Statement anlegt, SQL Befehl analysieren auf Ja steht (Direkt-SQL ausgeschaltet) und man dann in den Bearbeitungsmodus wechselt. Das Programm versucht das GUI aufzurufen, es kann den Code aber grafisch nicht darstellen, Absturz.
Daher kann ich den Workaround von Richie bestätigen, wenn die Formulare verknüpft werden sollen, braucht man nämlich "SQL-Befehl-analysieren" sonst ist die Verknüpfung tot.
Also, wenn das Statement geschrieben ist, speichern, Editor verlassen, und dann erst "SQL-Befehl-analysieren" wieder einschalten.
Zum NOT LIKE:
Tippe ich den Befehl ein, läuft er, kein Problem.
Da hast Du mich noch auf eine Idee gebracht, Richie.
Ich habe einmal versucht zu verstehen, was eigentlich genau bei so einem SELF JOIN passiert:
Wir haben in der Tabelle "Handelskurse"
864 Zeilen,
36 Transportgüter_IDs und zufällig je Transportgüter_ID
24 Teile
36*
24 =
864
Daher errechnet sich die maximale mögliche Zeilenzahl, da die beiden Instanzen der Tabellen über die Transportgüter_ID miteinander verknüpft sind, so:
24^2 *
36 =
20736 wobei das
^2 eben durch den SELF JOIN kommt.
Wenn du
keine "Where" Einschränkung angibst, die Abfrage ausführst und ans Ende der Abfrage springst, findest Du
---->
20736 Zeilen
Passt erstaunlich gut!
Jetzt habe ich folgende Einschränkungen ausprobiert:
----> 17064 Zeilen
Code: Alles auswählen
WHERE "Y"."Basis verkauft" NOT LIKE "X"."Basis verkauft"
----> 4838 Zeilen
<> bedeutet ungleich, ob hier auch nur Strings verglichen werden?
----> 4838 Zeilen
----> 3672 Zeilen
Code: Alles auswählen
WHERE "Y"."Basis verkauft" = 'Nein'
AND "X"."Basis verkauft" = 'Ja'
----> 2419 Zeilen
Super-> Das ist es!
Ich habe den Befehl eingesetzt, und mit den bisherigen Ergebnissen verglichen, funktioniert einwandfrei.
Man muß ja nicht mehr abfragen als man benötigt!
Schneller sollte es so auch gehen.
EDIT:Ich konnte alle Zahlenwerte in Calc nachrechnen und so nachvollziehen, ich denke die Tabelle hilft zu verstehen, was passiert:

- Zeilenberechnung.png (16.58 KiB) 1770 mal betrachtet
Sinngemäß bedeutet das letzte Statement mit den beiden Bedingungen also:
Nimm
nur die Preise mit 'Ja' aus Tabelle1(X) und ziehe
nur die Preise mit 'Nein' aus Tabelle2(Y) davon ab.
Das aber nur bei den Datensätzen, die die gleiche Transportgüter_ID in X und Y haben.
Beste Grüße von R