2017-01-10 4 views
0
select location , 
name as (select name from tbd b 
Join tbt t on t.id =. b.id where x= 456) 
From customer 

Ich versuche, die oben Wie Ergebnis einer anderen Abfrage als berechnete Spalte zu HauptabfrageOracle berechnete Spalte Speicher wählen Ergebnis

+3

Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. Wie gesagt, die Frage macht wirklich keinen Sinn. –

Antwort

1

Sie sind wahrscheinlich eine Unterabfrage wie diese zu schreiben suchen hinzufügen:

select 
    location, 
    (select 
     name 
    from tbd b Join tbt t 
     on t.id = b.id 
    where x= 456) as name 
From customer; 

Beachten Sie, dass die Unterabfrage nur eine Spalte auswählen muss und höchstens eine Zeile zurückgeben soll.

Beachten Sie auch, dass die Abfrage, wenn sie mit der äußeren Abfrage korreliert, wahrscheinlich langsam ausgeführt wird. Vielleicht möchten Sie weitere Details in der Frage hinzufügen, was Sie zu tun versuchen.

+0

'diese Art von SQL-Abfragen werden wahrscheinlich langsam laufen ... ... warum sagst du das? Dies ist nicht unbedingt der Fall, insbesondere dann, wenn die Abfrage das skalare Unterabfrage-Caching nutzen kann. Wenn man sich das Beispiel des OP anschaut, ist es sehr wahrscheinlich, dass die skalare Unterabfrage einmal ausgeführt wird und dann nur das zwischengespeicherte Ergebnis verwendet, da sie nicht mit der Kundentabelle korreliert ist (ob das Beispiel des OPs für ihr tatsächliches Problem repräsentativ ist). – Boneist

+0

@Boneion Du hast absolut recht. Ich sagte * wahrscheinlich *, weil ich dachte, OP möchte eine korrelierte Abfrage. Ich nehme Dinge an, wenn Fragen nicht klar sind: P. – GurV