2017-04-27 1 views
0

Ich habe zwei Tabellen, denen ich beitreten muss, und es fällt mir schwer, es zu tun. Hier ist ein vereinfachtes Beispiel:Bedingte Join in ACCESS SQL basierend auf dem Wert des Feldes?

Tabelle 1 (T1) mit den Feldern: Cust_ID, prod_id, TYPE_ID

Tabelle 2 (T2) mit den Feldern: Cust_ID, prod_id, TYPE_ID, Ergebnisse

Der Haken ist: Ich brauche alle Werte aus Tabelle eins. Wenn T1.Cust_ID Null ist, dann brauche ich alle Zeilen von T2 mit der gleichen Prod_ID und Type_ID. Wenn T1.Cust_ID nicht Null ist, dann brauche ich nur die Zeilen von T2, wobei T1.Cust_ID = T2.Cust_ID mit derselben Prod_ID und Type_ID ist.

Mein erster Versuch war, eine Union-Abfrage zu machen:

Select T1.Cust_ID, T1.Prod_ID, T1.Type_ID, T2.Results 
From T1 left join T2 
On T1.Cust_ID=T1.Cust_ID and T1.Prod_ID=T2.Prod_ID and T1.Type_ID=T2.Type_ID 
Where T1.Cust_ID is not Null 
Union 
Select T1.Cust_ID, T1.Prod_ID, T1.Type_ID, T2.Results 
From T1 left join T2 
On T1.Prod_ID=T2.Prod_ID and T1.Type_ID=T2.Type_ID 
Where T1.Cust_ID is Null 

ich seine Brute Ansatz kennen, aber es funktioniert für ein Feld. Jetzt muss ich diese Art von Bedingung auf mehr als ein Feld haben und ich fragte mich, wie man es dynamisch macht. Ich suchte online nach einer Lösung, konnte aber in dieser Situation niemanden finden.

Irgendwelche Ideen oder Links zur gleichen Frage? Danke

Antwort

0

Ich hoffe ich habe dich richtig verstanden. Das könnte für Sie zum Trick:

SELECT 
      SWITCH(
      T1.Cust_ID IS NULL,T2.Cust_ID, 
      T1.Cust_ID IS NOT NULL, T1.Cust_ID 
     ) AS Cust_ID, 
      SWITCH(
      T1.Cust_ID IS NULL,T2.Prod_ID, 
      T1.Cust_ID IS NOT NULL, T1.Prod_ID 
     ) AS Prod_ID, 
      SWITCH(
      T1.Cust_ID IS NULL,T2.Type_ID, 
      T1.Cust_ID IS NOT NULL, T1.Type_ID 
     ) AS Cust_ID, 
      T2.Results 
     FROM T1 
     FULL OUTER JOIN T2 
     ON T1.Prod_ID = T2.Prod_ID 
     AND T1.Type_ID = T2.Type_ID 
+0

Stellt sich heraus, es gibt keine „CASE“ Funktion in ACCESS :-( –

+0

Sorry, ich habe Sie MSACCESS nicht bemerkt, indem ich bearbeitet Code-Schnipsel Versuchen Sie es jetzt nutzen.. – Barkezy

+0

Hallo, Danke für deine Antwort, es stellt sich heraus, dass MS ACCESS auch keine vollständigen Outer Joins unterstützt. –

Verwandte Themen