Как объединить 4 таблицы MySQL? - PullRequest
0 голосов
/ 15 апреля 2019
$query = "SELECT * FROM cd_university_details AS ud
    LEFT JOIN cd_universities AS uni
    ON uni.uni_id = ud.uni_id
    LEFT JOIN cd_lev AS l
    ON l.lev_id = ud.lev_id
    LEFT JOIN cd_programs AS p
    ON p.prg_id = ud.prg_id
    LEFT JOIN cd_spe AS s
    ON s.spe_id = ud.spe_id";

Этот запрос не работает.

Он устанавливает лимит записей как ...

$query = "SELECT * FROM cd_university_details AS ud
    LEFT JOIN cd_universities AS uni
    ON uni.uni_id = ud.uni_id
    LEFT JOIN cd_lev AS l
    ON l.lev_id = ud.lev_id
    LEFT JOIN cd_programs AS p
    ON p.prg_id = ud.prg_id
    LEFT JOIN cd_spe AS s
    ON s.spe_id = ud.spe_id LIMIT 20";

Тогда он работает, а также, если я использую только 3 таблицы,также дает результат.

$query = "SELECT * FROM cd_university_details AS ud
    LEFT JOIN cd_universities AS uni
    ON uni.uni_id = ud.uni_id
    LEFT JOIN cd_lev AS l
    ON l.lev_id = ud.lev_id
    LEFT JOIN cd_programs AS p
    ON p.prg_id = ud.prg_id
    LEFT JOIN cd_spe AS s
    ON s.spe_id = ud.spe_id";

Все записи из 4 таблиц должны прийти.

1 Ответ

0 голосов
/ 15 апреля 2019

Если единственная разница между запросом, который «не работает», и запросом, который «работает», заключается в добавлении предложения LIMIT ...

Тогда, похоже, проблема не вв синтаксисе оператора SQL.

Я рекомендую протестировать запрос вне приложения;Отнесите его другому клиенту и убедитесь, что он работает.

Мы можем разрешить исключения в PHP, а также настроить PDO на выдачу исключений:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Одной из возможностей является обработкабольшого набора результатов ... эта память исчерпана, пытаясь сохранить весь набор результатов в памяти.(Полукартово (перекрестное) произведение может генерировать много повторяющихся значений.)

Подумайте, нужно ли возвращать все эти перекрестные совпадения или же отдельные запросы каждой дочерней таблицы могут возвращать строки, которые

Также рассмотрите возможность замены * в списке SELECT кратким списком выражений, которые необходимо вернуть, а не на каждый столбец в каждой таблице.

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