联合2表sql,仅显示第一个查询

时间:2018-10-22 16:10:04

标签: php sql-server join union

我正在尝试使用UNIÓN联接2个查询,但是它仅显示第一个查询的结果,以下代码在SQLServer和phpMyAdmin中有效,但在PHP脚本中执行时不起作用,我也想尝试JOIN但这对我不起作用。 (我正在使用接收2个参数的函数:category,id user。第一个查询托管由用户执行的“任务”,第二个查询返回“待处理的任务”。第一个查询的列较少,因此用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 with ? not working

1 个答案:

答案 0 :(得分:0)

只需用数字“一”,“两个”等替换“ *”字段即可。列出它们将确保您的字段在查询之间排成一行:

 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;