Как лучше объединить три простых MySQL запроса в один сложный?

Есть три простых MySQL запроса:

SELECT id_city, id_region, id_country FROM cities WHERE city_name_ru LIKE '$city1'


SELECT country_name_ru FROM countries WHERE id_country = '$country'


SELECT region_name_ru FROM regions WHERE id_region = '$region'


Каждый запрос зависит от предидущего запроса. Вопрос - Как лучше объединить три простых MySQL запроса в один сложный?
  • Вопрос задан
  • 2801 просмотр
Решения вопроса 3
svd71
@svd71
Джоином лучше пользоваться в случае, если данных в одной из таблиц не существует, но вывод обязан быть.
Select * from cities s
Left join countries c on s.id_country=c.id_country
Left join regions r on r.id_region=c.id_region
Where city_name_ru like '$city'

Если не будут совпадающие записи в countries и regions вернет вместо них null значения.

Запрос типа
Select × from cities s, countries c, regions r
Where s.id_country=c.id_country and r.id_region=id_region
And c.city_name-ru like '$city'

Выполняется намного быстрее первого, но при условии что во вснх таблицах должны быть совпадения.

Если кто то будет выкабениваться на счет звездочек, то скажи что со звездочкой запрос выполняется быстрее. СУБД перед фетчингом записей сначала читает абсолютноивсе значения полей, а уже непосредственно перед передачей начинает откидывать не требуемые поля. На это тратится время. Если бы в тпблицах было бы по 200 столбцов, то это бы было целесообразно указывать.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Здесь скорее LEFT JOIN
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
INNER JOIN
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы