Ignoriere SQL INNER JOIN, wenn keine Datensätze hinzugefügt werden sollen?

8

Ich habe folgendes Join

%Vor%

Die Tabellenvariable @SynonymTable enthält (falls erforderlich) eine Liste mit Begriffen wie:

%Vor%

Diese basieren alle auf einer Liste von Synonymen für eine bestimmte Stichwortsuche, wie zum Beispiel dem Begriff "Shirt" - von diesem kann ich dann alle Artikel finden, die verwandt sein können, usw. Das Problem ist, dass wenn es das gibt Kein Schlüsselwort geliefert Die Abfrage fügt offensichtlich nichts hinzu.

Gibt es überhaupt eine Möglichkeit, die Verknüpfung zu beenden oder alle Elemente zurückzugeben, wenn in der Synonym-Tabelle keine Elemente vorhanden sind?

Ich habe Posts wie den letzten INNER JOIN in der Abfrage umgehen gefunden aber kann ich es nicht für mein Szenario verwenden?

Jede Hilfe oder Beratung wäre großartig.

    
Nathan 03.01.2013, 14:15
quelle

3 Antworten

6

Sie können eine Auswahl wie folgt verwenden:

%Vor%     
András Ottó 03.01.2013, 14:45
quelle
4

Verwenden Sie zwei verschiedene Abfragen, überprüfen Sie, ob synonymtable Zeilen enthält, und führen Sie eine Abfrage mit inner join else aus, um Zeilen aus products table

zurückzugeben %Vor%     
rs. 03.01.2013 14:33
quelle
1

Eine Lösung wäre, die Synonym-Tabelle nicht zu verwenden, sondern sie in einer where-Klausel zu verwenden

nicht der eleganteste Code, aber sollte funktionieren (es sei denn, Sie haben eine große Synonym-Tabelle, dann wird es langsamer)

%Vor%     
ufosnowcat 03.01.2013 14:35
quelle

Tags und Links