Перевести запрос MySQL - правильно ли я это интерпретирую? - PullRequest
0 голосов
/ 11 мая 2011

Я просто пытаюсь перевести часть запроса:

...OR... AND Zip.id IN (SELECT plan_id FROM plans_zips 
WHERE zip_id = (SELECT id FROM zips WHERE title = '" . $Zip . "'))

Из того, что я могу сказать, запрос говорит следующее:

Получить все Zip.ids (из таблицы zips) и получить plan_id (из таблицы plan_zips) ГДЕ zip_id (с использованием plan_zips) = zip.id, где полный zip (заголовок) соответствует переменной $ Zip.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

То, что вы предлагаете, правильно.

Для MySQL гораздо более оптимально использовать объединения вместо вложенных подзапросов, подобных этому. Оптимизатор не сможет оптимизировать подзапросы, и они должны сначала выполняться с самым глубоким запросом.

1 голос
/ 11 мая 2011

Не совсем.

Если вы немного отступите от SQL, он станет более понятным.

...OR... AND 
Zip.id IN 
    (SELECT plan_id FROM plans_zips  WHERE zip_id =        //Get all the plan_ids where
        (SELECT id FROM zips WHERE title = '" . $Zip . "'))//the zip_id is the value returned from this query.

Я согласен с Джеймсом С. Хотя объединения гораздо лучше и легче читать1006 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...