views:

186

answers:

2

Hi Order By not working on MySql

the code is as follows,

select * from School where School.type = 'HighSchool' 
   order by (select locations.name from locations inner join School_locations 
      on locations.id = School_locations.location_id where 
         School_locations.School_id = School.id  and locations.location_country = 'US' limit 1)

and the output is displaying same for both ascending as well as descending how to solve this problem

+2  A: 

I don't think you'd need to do the subquery:

SELECT s.*
FROM School s
    INNER JOIN School_locations sl ON (s.id = sl.School_id)
    INNER JOIN locations l ON (l.id = sl.location_id)
WHERE l.location_country = 'US' AND s.type = 'High school'
ORDER BY l.name
nickf
+1, this way is better.
Mr. Smith
Thanks Buddy +1 for ur better answer
Senthil Kumar Bhaskaran
A: 
select school.* from school
    inner join school_locations on school_locations.schoolid = school.school_id
    inner join locations on locations.location.id = school_locations.locationid
where
    locations.location_country = 'US' and school.type = 'HighSchool'
order by
    locations.name
limit 1
Mr. Smith