2017-10-18 4 views
0

ich mit dem Namen einer Tabelle haben und sie die gleiche Lageein Kriterium von Ergebnisausgabe Ohne

John NY 
Paul NY 
Andrew NY 
Eva NY 
Patrick NJ 
Sally CA 
Aby NJ 

Jetzt teilen, habe ich ein Skript dies ein Kriterium, bei dem der Benutzer einen Namen wählen kann (zB: Name = ' John ') Sobald der Name ausgewählt ist, wird eine Spalte auch alle anderen Namen, die in NY sind (Paul, Andrew, Eva).

Ich kann es mit einem plsql unten erstellen, aber Sie wissen nie, wer ausgewählt wird. Also kann ich es nicht fest codieren. Es sieht einfach aus, aber ich kämpfe mit ihm. Ich möchte einen Weg finden, ohne das Kriterium auszuwählen, das verwendet wurde.

wählen d.name, d.location, OTHER_NAME

von MYWORK d

wo d.location = 'NY'

und d.name! = 'John'

+1

Verwenden Sie MySQL oder Oracle? Markieren Sie keine nicht betroffenen Produkte. – jarlh

Antwort

0

Wenn es nur 2 Ebenen gibt, dann ist ein Self-Join mein bevorzugter Ansatz:

SELECT d2.name, d.location 
FROM (SELECT DISTINCT location FROM Yourtable WHERE name = 'John') L 
JOIN Yourtable L2 ON L.location = L2.location 

Wenn die locati

über
SELECT d2.name, d.location 
FROM Yourtable l 
JOIN Yourtable L2 ON L.location = L2.location 
WHERE l.name = 'John' 

unsicher Ich bin, wie Sie die Spalten aussehen soll: Ein/Name unterscheidet, kann dies auch geschrieben werden. Möglicherweise möchten Sie:

SELECT d.name, d.location, d2.name 
FROM Yourtable l 
JOIN Yourtable L2 ON L.location = L2.location 
WHERE l.name = 'John' 
AND l2.name <> 'John' 
+0

Vielen Dank aaron. Der dritte ist, wonach ich suche. Es funktionierte jetzt, mein nächster Schritt ist, dies zu einem größeren Skript zu bringen, entferne den hardcoded Namen vom Index, wo der Name am Ende Kriterium sein wird. – user3139937

+0

@ user3139937 Glücklich zu helfen. Das wird nur die dritte Abfrage sein, wobei ''name'' eine Variable ist, die Sie als Parameter übergeben. Wenn Sie Hilfe brauchen, zögern Sie nicht, eine andere Frage zu stellen. SO bevorzugt separate Fragen. Vergessen Sie auch nicht, Antworten/Upvotes zu akzeptieren, wenn Ihnen eine Antwort hilft. –

Verwandte Themen