oracle - sql query- group by and then join -


i have 2 tables follow:

1)passenger - passenger_id,passenger_name , passenger_city 2)flight - flight_id,flight_name , passenger_id. 

the question is:

list passenger details flight id, has travelled in more 1 flight. (this function display passenger details flight id's has travelled in more 1 flight.)

i used query:

select * passenger_1038299  passengerid in(select passengerid flight_1038299                       group passengerid                       having count(passengerid)>1); 

but doesnt give me flight_ids. please tell how retrieve flight id well. , sorry stupid question new sql.

join flight table passenger's flights

select * passenger_1038299 p join flight_1038299 f on f.passenger_id = p.passenger_id p.passengerid in(     select passengerid flight_1038299 group passengerid having count(passengerid)>1 ); 

i use exists check multiples. index on passenger_id may run faster query above.

select * passenger_1038299 p join flight_1038299 f on f.passenger_id = p.passenger_id exists (   select 1 flight_1038299 f2    f2.passenger_id = f.passenger_id   , f2.flight_id <> f.flight_id ) 

edit

another way using count window function:

select * (     select *,          count() on (partition p.passenger_id) cnt     passenger_1038299 p     join flight_1038299 f on f.passenger_id = p.passenger_id ) t cnt > 1 

Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -