2017-08-20 1 views
0

J'ai un tableau des détails du bus. Il a bus_name, bus_source et bus_destination. J'ai besoin de savoir quelles paires de bus rendent possible un voyage de retour. par ex.Comment afficher ceci: paire de lignes - colonne une valeur d'une rangée est dans la colonne b de la rangée 2 et la colonne une valeur de la deuxième rangée est dans la colonne b de la première rangée oracle?

bus_name | bus_source | bus_destination 
    a  | Chennai | Bangalore 
    b  | Bangalore | Chennai 
    c  | Mumbai  | Chennai 

Je me attends ceci:

bus_name | bus_source | bus_destination 
    a  | Chennai | Bangalore 
    b  | Bangalore | Chennai 
+3

Allez. Essayer quelque chose. – Strawberry

+0

Avez-vous prévu quelque chose? Avez-vous fait des expériences? Si vous l'avez fait, pouvez-vous imprimer le résultat? Dans StackOverflow, lorsque vous postez une question, il est important de montrer que vous avez fait des efforts pour la résoudre. – alepuzio

+0

Est-il vrai dans vos données que toutes les combinaisons de bus_source et de bus_destination n'apparaissent qu'une seule fois? Sinon, le problème n'a pas de sens: il peut y avoir six bus différents (noms différents) de Chennai à Bangalore et huit bus différents de Bangalore à Chennai, comment envisagez-vous de les coupler en voyages aller-retour? Vous n'avez même pas les heures de départ et d'arrivée, ce qui peut réduire le nombre de combinaisons valides (et pourrait peut-être être utilisé pour créer une logique pour des appariements uniques). – mathguy

Répondre

2

Utilisation EXISTS():

SELECT * FROM YourTable t 
WHERE EXISTS(SELECT 1 FROM YourTable s 
      WHERE t.bus_source = s.bus_destination 
       AND t.bus_destination = s.bus_source); 
+0

Mais ... mais ... l'énoncé du problème est d'identifier les PAIRES de bus qui constituent un voyage aller-retour. Votre requête ne le fait pas. – mathguy

+0

Pourquoi ne fait-il pas ça? : S @mathguy – sagi

+0

Parce qu'il n'identifie pas les paires de quelque chose pour commencer. Il ne trouve que les bus qui pourraient être jumelés, mais il ne les jumelle pas. Imaginez que chaque bus de la table faisait partie d'une paire aller-retour; alors votre sortie est simplement la table de départ, sans vous dire quel couple de bus avec lequel. – mathguy