php - 使用 SQL 将 2 个结果合并为 1 个

标签 php mysql sql

有点麻烦,我有一个复杂的查询,它返回 2 个结果,这很好而且花花公子,但我想修改查询,以便它合并 2 个结果并返回 1 个结果。我想知道这是否可能。我的例子:

SELECT s.f_Name s.l_Name, t.tour_Name, o.order_Placed, s.staff_ID, t.tour_ID, d.date
        FROM Staff_Day AS d, Tour as t, Staff AS s, Customers AS c
        JOIN Orders AS o ON c.customer_ID = o.order_No
        WHERE c.date >= '2014-03-18 00:00:00' AND c.date <= '2014-03-19 23:59:59'
        AND d.tour_ID = c.trip_Taken
        AND t.tour_ID = d.tour_ID
        AND d.date = c.date
        AND d.staff_ID = s.staff_ID
        ORDER BY d.staff_ID ASC

这将返回 2 个结果:

enter image description here

我想将其合并为 1 个结果,因此它具有以下列:

f_Name1, l_Name1, f_Name2, l_Name2, tour_Name,
order_Placed1, order_Placed2, staff_ID1, staff_ID2,
tour_ID1, tour_ID2, staff_Day_Date1, staff_Dat_Date2

最佳答案

是的,可以在 MySQL 中执行此操作。 但是……

不想这样做。

这在 PHP 的过程逻辑中处理会更好。获取两行,然后将它们组合成所需的输出。

作为在 MySQL 中可行的演示:

SELECT t.*
  FROM ( SELECT @prev_fee           AS fee_r1
              , @prev_fee := s.fee  AS fee_r2
              , @prev_fi            AS fi_r1
              , @prev_fi  := s.fi   AS fi_r2
              , @prev_fo            AS fo_r1
              , @prev_fo  := s.fo   AS fo_r2
           FROM (
                  SELECT 'a' AS fee, '1' AS fi, 'apple' AS fo
                   UNION ALL
                  SELECT 'c','3','cat'
                   UNION ALL
                  SELECT 'e','5','egg'
                   UNION ALL
                  SELECT 'b','2','bad'
                  ORDER BY 1
                ) s
          CROSS
           JOIN ( SELECT @prev_fee := NULL
                       , @prev_fi  := NULL
                       , @prev_fo  := NULL
                ) i
          LIMIT 2
       ) t
 LIMIT 1,1

您的原始查询将替换别名为 s 的内联 View 查询。您需要为查询返回的每一列定义用户变量,并使用它们来“保存”前一行的值。

在别名为 t 的内联 View 中,在将用户变量设置为当前行的值之前,上一行的保存值需要出现在 SELECT 列表中。如果您需要对列重新排序,则需要在最外层查询中进行。

关于php - 使用 SQL 将 2 个结果合并为 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22492084/

相关文章:

php - 检查重复名称忽略条目

java - 为什么我不能将用户输入添加到前端为 java 和后端为 mysql 的数据库中?

sql - 创建表时在哪里声明外键?

php - 在用php上传文件时需要输入标签而不是浏览按钮

php - Mysql Unknown column on View

php - 使用 PHP 从 MS Word 文档中提取图像的最简单方法?

SQL 中的 LIKE 下划线

php - 如何在复选框组上使用filter_input?

php - Laravel 多对多关系 - 检索模型

sql - SQL Interval 有问题