mysql - What is the best query for this? -


i have tables bus, street, route_going, route_return

in table street have

example:

id | name 1  | street1  2  | street2 3  | street4 ... n  | streetn 

the table route_going, have example:

id_bus | id_street | order 101    | 1         | 1 101    | 2         | 2 101    | 5         | 3  ... 

the table route_return, have example:

id_bus | id_street | order 101    | 3         | 1 101    | 2         | 2 101    | 1         | 3  ... 

ok, in example, bus 101 travel streets 1,2 , 5, in order. , bus streets 3,2 , 1, in order.

i want know buses pass @ street 'x' , street 'y' (first x, later y)

for example:

x = 1, y = 5 -> bus 101 pass x = 1, y = 3 -> bus 101 pass x = 3, y = 1 -> bus 101 pass x = 3, y = 5 -> bus 101 don't pass 

so, sql discover buses is... (passing streets 1 , 5 example)

select * bus b  -- bus passes between 2 streets @ going route?? exists (select * route_going rg1, route_going rg2,street r1,street r2 rg1.id_bus = rg2.id_bus , rg1.id_street = r1.id , rg2.id_street = r2.id , r1.id = 1 , r2.id = 5 , b.bus_id = rg1.id_bus , rg1.order <= rg2.order) -- bus passes between 2 streets @ return route?? or exists (select * route_return rg1, route_return rg2,street r1,street r2 rg1.id_bus = rg2.id_bus , rg1.id_street = r1.id , rg2.id_street = r2.id , r1.id = 1 , r2.id = 5 , b.bus_id = rg1.id_bus , rg1.order <= rg2.order) -- bus passes between 2 streets @ going route first , return route later?? or exists (select * route_going rg1, route_return rg2,street r1,street r2 rg1.id_bus = rg2.id_bus , rg1.id_street = r1.id , rg2.id_street = r2.id , r1.id = 1 , r2.id = 5 , b.bus_id = rg1.id_bus) 

so, think query not good. can me saying 'best' query search?

set @x = 1; set @y = 5;  select x.id_bus           ( select *,0 returning route_going union select *, 1 route_return ) x   join      ( select *,0 returning route_going union select *, 1 route_return ) y     on y.id_bus = x.id_bus    , (y.returning > x.returning or (y.returning = x.returning , y.porder > x.porder))  x.id_street = @x    , y.id_street = @y; 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -