Ich versuche im Wesentlichen, einzelne Datensätze in basierend auf Informationen in tableB
zu verbinden. Wenn ich mehr als ein Ergebnis mit den ursprünglichen Beitrittsbedingungen erhalte, füge ich mehr hinzu und führe die Abfrage erneut aus. Wenn ich keine Ergebnisse bekomme, wird nichts übertragen. Beispiel: Suche nach a.FRST_NM = b.FRST_NM
. Wenn ein Ergebnis, ziehen Sie den Datensatz. Wenn mehr als eins, fügen Sie LAST_NM
hinzu und wenn ein Ergebnis, ziehen Sie diesen Datensatz. So weiter und so weiter, bis ich einen Rekord habe. Ich kann eins nach dem anderen machen, aber das passiert 2 oder 3 mal pro Durchgang.Eine Suche ausführen, um Mitglied zu identifizieren
Dies liegt daran, dass einige Felder in der einen Tabelle nicht ausgefüllt sind, sondern in der anderen. Ich weiß nur nicht, wie man Join-Bedingungen hinzufügt, ohne die gesamte FROM
-Anweisung neu zu schreiben, oder wie man nur den Datensatz zieht, wenn es nur ein Ergebnis gibt.
IF(CONDITION_1 from JOIN_1) = 1 result THEN a.field_1 = b.field_1 and a.field_2 = b.field_2
IF (CONDITION_1 from JOIN_1) > 1 result THEN (additional joining conditions + JOIN_1) as JOIN_1a
ELSE IF(CONDITION_1 from JOIN_1a) = 1 result then a.field_1 = b.field_1 and a.field_2 = b.field_2
IF(CONDITION_1 from JOIN_1) = 0 results then NO MOVE
--(Repeat with different tables and joining conditions)--
Also anstatt die Fügebedingungen zu ändern, würde ich stattdessen CASE-Ausdrücke machen? Das klingt tatsächlich einfacher. Besonders, da in den späteren Pässen einige Tabellen entfernt werden und andere an ihrer Stelle hinzugefügt werden. –
Dies setzt voraus, dass alle Tabellen, die Sie durchsuchen möchten, am Anfang als LEFT JOINs verknüpft sind. Wählen Sie dann den gewünschten Datensatz aus, indem Sie die Priorität roze_number() auf Basis von case-Anweisungen festlegen. Aber Sie müssen immer noch alle Tabellen am Anfang verbunden haben ... – Matt
Dies funktioniert für den ersten Durchlauf, aber die späteren Durchgänge haben mich Tabellen entfernen und verbinden mit anderen zu laufen, wenn es> 1 oder = 0 Ergebnisse gibt. –