Ok, es scheint, als wäre dies eine Ad-hoc-Abfrage, die Sie in einem Frontend wie Query Analyzer oder Visual Studio ausführen.
Sie können eine if-Anweisung verwenden, und falls vorhanden, wie folgt aus:
IF EXISTS(select * from ref.Table1 where columnX = @VARIABLE)
select * from ref.Table1 where columnX = @VARIABLE
;
Um nur die Abfrage einmal zu laufen, es zu beschleunigen tun:
select * from ref.Table1 INTO #mytmp1 where columnX = @VARIABLE
IF EXISTS(SELECT * FROM #mytmp1)
SELECT * FROM #mytmp1
;
Als @LaughingVergil weist darauf hin, Sie könnten ein Problem haben, wenn Ihre ID nicht in der ersten Tabelle ist, die Sie so lösen können:
select Table1.*, Table2.*, Table3.*, TableN.*
from (
SELECT @VARIABLE as Criteria
) base
left join ref.Table1 where columnX = base.Criteria
left join ref.Table2 where columnX2 = base.Criteria
left join ref.Table3 where columnX3 = base.Criteria
-- ...
left join ref.TableN where columnXN = base.Criteria
zu "erkennen" welche Tabellendaten kommt aus
select
Table1.Field1 as Table1.Field1, Table1.Field2 as Table1.Field2, -- etc
Table2.Field1 as Table2.Field1, Table2.Field2 as Table2.Field2, -- etc
Table3.Field1 as Table3.Field1, Table3.Field2 as Table3.Field2, -- etc
TableN.Field1 as TableN.Field1, TableN.Field2 as TableN.Field2 -- etc
from (
SELECT @VARIABLE as Criteria
) base
left join ref.Table1 where columnX = base.Criteria
left join ref.Table2 where columnX2 = base.Criteria
left join ref.Table3 where columnX3 = base.Criteria
-- ...
left join ref.TableN where columnXN = base.Criteria
ursprüngliche Antwort
Regel in SQL verwenden wir JOINs für diese Art von Situation (Sie muss wahrscheinlich genauer über Spalten sein, es sei denn, Sie interessieren sich nicht für mehrere Spalten mit dem gleichen Namen)
DECLARE @VARIABLE as varchar(30)
SET @VARIABLE = 'Thing to look up'
select Table1.*, Table2.*, Table3.*, TableN.*
from ref.Table1
left join ref.Table2 where columnX2 = columnX
left join ref.Table3 where columnX3 = columnX
-- ...
left join ref.TableN where columnXN = columnX
where columnX = @VARIABLE
Oft wird eine Ansicht verwendet, um es einfacher zu machen (hier müssen Sie bestimmte Spaltennamen angeben oder die Erstellungsansicht wird fehlschlagen).
create view myview as
select Table1.*, Table2.*, Table3.*, TableN.*
from ref.Table1
left join ref.Table2 where columnX2 = columnX
left join ref.Table3 where columnX3 = columnX
-- ...
left join ref.TableN where columnXN = columnX
dann
select *
from myview
where columnX = @VARIABLE
wahrscheinlich benötigen Sie 'UNION ALL 'Zeigen Sie uns Beispieldaten und erwartete Ausgabe. \t Bitte lesen Sie [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein großartiger Ort, um [** START **] (http://spaghettiba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) um zu erfahren, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –
Eine Frage - müssen Sie wissen, welche Tabelle (n) die Referenz gefunden wurde, oder nur die Tatsache, dass sie gefunden wurde? Wenn Sie die Tabelleninformationen benötigen, möchten Sie dies möglicherweise als Rückgabewert in den Zeilen fest codieren. Wie Juan Carlos Oropeza sagte, eine UNION oder UNION ALL ist der Weg, um dies zu tun - UNION, wenn Sie nur wissen wollen, existiert es, UNION ALL, wenn Sie wissen wollen, wie oft es existiert. –
@JuanCarlosOropeza, Danke. Wie bereits erwähnt, sind die Spalten unterschiedlich, so dass dies nicht funktioniert. Ich werde das How-To-Ask noch einmal lesen. Prost – ColinMac