У меня есть три таблицы.using where и внутреннее соединение в mysql
локаций
ID | NAME | TYPE |
1 | add1 | stat |
2 | add2 | coun |
3 | add3 | coun |
4 | add4 | coun |
5 | add5 | stat |
школы
ID | NAME
1 | sch1
2 | sch2
3 |sch3
school_locations
ID |LOCATIONS_ID |SCHOOL_ID
1 | 1 |1
2 | 2 |2
3 | 3 |3
Вот таблица LOC ations содержит все местоположения приложения. Локации для школы вызываются по идентификаторам.
когда я использую запрос
select locations.name from locations where type="coun";
отображает имена с типом "стра"
Но я хочу, чтобы отобразить locations.name где только school_locations имеют тип = "COUN"
я попробовал следующие запросы, но ни один из них не работает
select locations.name
from locations
where type="coun"
inner join school_locations
on locations.id=school_locations.location_id
inner join schools
on school_locations.school.id=schools.id;
и
select locations.name
from locations
inner join school_locations
on locations.id=school_locations.location_id
inner join schools
on school_locations.school.id=schools.id where type="coun";
Возможно ли использовать несколько внутренних соединений в запросах, или есть другой способ?
является кавычка необходимы Msql? –
нет, но мне нравится иметь их там, это позволяет избежать проблем со странными именами таблиц или столбцов (например, select, count, a% b и т. Д.) И более надежным. – knittl
Он также, к сожалению, делает запрос не ANSI-совместимым , что может вызвать проблемы, если вы попытаетесь перенести запрос в другую базу данных. Правильный способ разграничения идентификаторов - с «двойными», но MySQL не поддерживает это по умолчанию; вы должны установить ANSI_QUOTES в SQL_MODE, чтобы получить это. Конечно, тогда испортит ваш строковый литерал «страна», который должен быть написан независимо от SQL_MODE с одинарными кавычками. – bobince