2017-10-03 3 views
2

Je veux comparer plusieurs valeurs d'une colonne avec une seule valeur d'une autre colonne.J'ai beaucoup essayé, mais il me donne "Aucune ligne sélectionnée" voici mon scénario ...Comparer plusieurs valeurs dans une seule colonne oracle

J'ai une table Bus_stop_table:

bus_id (FK) ------ stop_id

201 ------------------- 401

201 ------------------- 402

201 -------------------- 403

202 ------------------- 401

202 ------------------- 405

203 ------------------- 403

203 ------------------- 406

Je dois choisir un bus_id qui a à la fois stop_id 401 et 403. 201 qui est mais quand j'essaie de trouver cela, je n'ai pas eu e résultat désiré .. voici mes questions

SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID =all(401,405); 

et

SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID 401 and STOP_ID = 
405; 

SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID 401 and STOP_ID = 
405 group by (bus_id , stop_id); 

S'il vous plaît quelqu'un peut me aider.

Répondre

4

Utilisez Group by et Having clause

SELECT Bus_ID 
FROM Bus_stop_table 
WHERE STOP_ID IN (401, 403) 
GROUP BY Bus_ID 
HAVING Count(DISTINCT STOP_ID) = 2 

ou approche plus souple

SELECT Bus_ID 
FROM Bus_stop_table 
GROUP BY Bus_ID 
HAVING Sum(CASE STOP_ID WHEN 401 THEN 1 ELSE 0 END) > 0 
     AND Sum(CASE STOP_ID WHEN 403 THEN 1 ELSE 0 END) > 0