2017-10-18 2 views
0

J'ai une table avec le nom et ils partagent le même endroitHors un critère de sortie de résultat

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

Maintenant, j'ai créé un script ce critère où l'utilisateur peut choisir un nom (ex: Name = ' John ') Une fois le nom choisi, une colonne indiquera également tous les autres noms qui se trouvent à NY (Paul, Andrew, Eva).

Je peux le créer avec un plsql ci-dessous mais on ne sait jamais qui sera choisi. Donc je ne peux pas le coder en dur. Ça a l'air simple mais je me bats avec ça. Je veux un moyen d'émunérer sans avoir à choisir le critère qui était utilisé.

select d.name, d.location, OTHER_NAME

de MYWORK d

où d.location = 'NY'

et d.name! = 'John'

+1

Utilisez-vous MySQL ou Oracle? Ne pas étiqueter les produits non concernés. – jarlh

Répondre

0

S'il y a seulement 2 niveaux, alors une auto-jointure est mon approche préférée:

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

Si le locati le/nom est distinct, cela peut aussi être écrit:

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

Je ne suis pas sûr de la façon dont vous voulez que les colonnes à regarder. Il se peut que vous soyez après:

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

Merci beaucoup aaron. Le troisième est ce que je suis après. Cela a fonctionné maintenant ma prochaine étape est d'apporter ceci à un plus grand script, enlève le nom codé en dur de l'indice où le nom sera critère à la fin. – user3139937

+0

@ user3139937 Heureux de vous aider. Ce sera juste la troisième requête, avec ''name' 'étant une variable que vous passez en paramètre. Si vous avez besoin d'aide, n'hésitez pas à poser une autre question. SO préfère les questions séparées. Aussi, n'oubliez pas d'accepter les réponses/upvote si une réponse vous aide. –