Объединение 2 таблиц sql, показывает только первый запрос - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь объединить 2 запроса, используя UNIÓN, но он показывает только результат первого запроса, следующий код работает в SQLServer & phpMyAdmin, но не при выполнении в сценарии PHP, я также хотел бы попробовать с JOINно это не работает для меня.(Я использую функции, которые получают 2 параметра: категорию, идентификатор пользователя. Первый запрос содержит «задачи, выполненные пользователем», а второй запрос возвращает «отложенные задачи». Первый запрос содержит меньше столбцов, поэтому заполните его значениями NULL)

            (SELECT ca.*, pem.orden  FROM Escolares.ftCardex('7', '3395') AS ca, Escolares.plan_estudios_materia AS pem WHERE pem.idmateria=ca.idMateria AND pem.idplan_estudios=ca.idPlanDeEstudios )
             UNION ALL
            (SELECT NULL, NULL, idMateria, NULL, Materia,
             NULL, NULL, NULL, NULL, NULL,
             NULL, NULL, NULL, NULL, NULL,
            NULL, NULL, NULL, NULL, NULL,
            NULL, NULL
               FROM Escolares.ftMateriasPorCursar('7', '3395'))
            ORDER BY orden

Результаты выглядят так:

From ID 17 the second Query is separated from the first one.


Решено

Я думаю, что ошибка была в том, как PHP выполняет запрос,проблема была похожа на: PDO UNION с?не работает

1 Ответ

0 голосов
/ 22 октября 2018

Просто заменив поля «*» числами «один», «два» и т. Д. Их перечисление гарантирует, что ваши поля выстраиваются между запросами:

 SELECT ca.[one]
       ,ca.[two]
       ,ca.idMateria
       ,ca.[three]
       ,ca.[Materia]
       ,ca.[five]
       ,ca.[six]
       ,ca.[seven]
       ,ca.[eight]
       ,ca.[nine]
       ,ca.[ten]
       ,ca.[eleven]
       ,ca.[twelve]
       ,ca.[thirteen]
       ,ca.[fourteen]
       ,ca.[fifteen]
       ,ca.[sixteen]
       ,ca.[seventeen]
       ,ca.[eighteen]
       ,ca.[nineteen]
       ,ca.[twenty]
       ,pem.orden
 FROM   Escolares.ftCardex('7', '3395') AS ca
        JOIN Escolares.plan_estudios_materia AS pem ON pem.idmateria = ca.idMateria
                                                       AND pem.idplan_estudios = ca.idPlanDeEstudios
 UNION ALL
 SELECT [one] = NULL
       ,NULL
       ,idMateria
       ,NULL
       ,Materia
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
       ,NULL
 FROM   Escolares.ftMateriasPorCursar('7', '3395')
 ORDER BY orden;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...