Ich habe zwei Tabellen: NewParts, storedpartsMS ACCESS SQL Join Subquery
ich die Teile der NewParts einsetzen, die nicht-Jet in den storedparts in die storedparts sind:
SQL_String = "INSERT INTO storedparts " & _
"SELECT newparts.* " & _
"FROM storedparts " & _
"RIGHT JOIN newparts ON (storedparts.identifier = newparts.identifier) AND (storedparts.timeStamp = newparts.timeStamp) " & _
"WHERE ((storedparts.AutoID) Is Null);"
Dies funktioniert gut bisher. Jetzt wird das Problem: Table storedparts so groß, dass das Programm für den Join-Prozess zu lang wird. Meine Lösung: Vergleichen Sie die neuen Teile nicht mit allen Teilen der gespeicherten Teile, sondern nur mit Teilen, die nicht älter als 4 Tage sind ... Ich habe eine Unterabfrage wie diese versucht, aber ich kann sie nicht ausführen.
SQL_String = "INSERT INTO storedparts " & _
"SELECT newparts.* " & _
"FROM storedparts (WHERE storedparts.timestamp > Now() - 4) " & _
"RIGHT JOIN newparts ON (storedparts.identifier = newparts.identifier) AND (storedparts.timeStamp = newparts.timeStamp) " & _
"WHERE ((storedparts.AutoID) Is Null);"
Jede Hilfe wird geschätzt.
Warum 'RECHT JOIN'? Wenn Outer Join wirklich benötigt wird, wechseln Sie die Tabellen und machen Sie stattdessen einen 'LEFT JOIN'. Die meisten Leute finden diese schwer genug, um zu verstehen, und rechts verbinden sich viel verwirrender. (Es ist einfacher zu verstehen "Haupttabelle links Join optionale Daten" anstelle von "optionale Daten rechts Join Haupttabelle".) – jarlh