Есть таблица с городами. Для каждого города указан регион. Зная название города, нужно получить все города из его региона. За два запроса это легко сделать. А возможно как-нибудь сделать одним запросом? Функция выполняется часто и уменьшить число запросов будет полезно
Вложенные запросы, присоединения, разнесенные по времени и функциям запросы (если есть имя города, то часто есть и id его региона – просто нужно вытягивать всю инфу до крупицы из «побочных» запросов, чтобы не тянуть из базы одно и то же по несколько раз).
Структура точно не правильная но если извращаться то можно и так select * from cities where city=(select users.city from users where id=1 limit 1) limit 10
Задача немного изменилась. Нужно получить города зная регион. Сложность в том, что в таблице городов указаны id регионов, а у скрипта есть название региона. Я ипользовал принцип, предложенный nospiou и всё получилось Запрос написал такой: SELECT name FROM city WHERE region=(SELECT id FROM regions WHERE name='$name')
@AlNick, сравни с вариантом: Код (Text): SELECT t1.`name` FROM city as t1 join regions as t2 on t2.id = t1.region and t2.`name`='$name' И вместо прямой подстановки переменной в запрос пора уже использовать, например, подготовленные запросы (prepared statements) --- Добавлено --- (explain на оба... варианта запросов)