使用

时间:2016-07-03 21:03:24

标签: sqlite

首先,我的英语基本。抱歉。 第二件事,这里最重要的是:我找不到做简单查询的方法。我的桌子是这样的:

------------------------------------------
id_det_iti | id_iti | orden_iti| id_ciudad
--------------------------------------------
1          | 1      | 1        | 374      
2          | 1      | 2        | 25
3          | 1      | 3        | 241
4          | 2      | 1        | 34      
5          | 2      | 2        | 22
6          | 2      | 3        | 352
7          | 2      | 4        | 17
--------------------------------------------

然后,我想得到这样的结果:

------------------------------------------
id_iti | min | id_ciudad | max | id_ciudad
------------------------------------------
1      | 1   | 374       | 3   | 241      
2      | 1   | 34        | 4   | 17   
------------------------------------------    

我需要通过id_iti显示同一行组中的最大值和最小值。 我试图使用完全连接,但我正在使用sqlite,这不是一个选项。我花了很长时间尝试不同的选择,但我找不到解决方案。我希望你们能帮助我。 提前谢谢!

编辑:

SELECT a.id_iti, c.id_ciudad, d.id_ciudad
FROM detalle_itinerario as a, 
(SELECT MAX(orden_iti),id_ciudad, id_iti FROM detalle_itinerario) AS c
INNER JOIN 
(SELECT MIN(orden_iti),id_ciudad, id_iti FROM detalle_itinerario) AS d
ON c.id_iti=d.id_iti
GROUP BY a.id_iti;

这只是我的一次尝试,但我只得到了第一次巧合的价值。

1 个答案:

答案 0 :(得分:0)

首先,使用简单查询获取每个组的最小/最大值:

SELECT id_iti,
       MIN(orden_iti) AS min,
       MAX(orden_iti) AS max,
FROM detalle_itinerario
GROUP BY id_iti;

您可以使用这些值连接回原始表:

SELECT a.id_iti,
       a.min,
       a2.id_ciudad,
       a.max,
       a3.id_ciudad
FROM (SELECT id_iti,
             MIN(orden_iti) AS min,
             MAX(orden_iti) AS max
      FROM detalle_itinerario
      GROUP BY id_iti) AS a
JOIN detalle_itinerario AS a2 ON a.id_iti = a2.id_iti AND a.min = a2.orden_iti
JOIN detalle_itinerario AS a3 ON a.id_iti = a3.id_iti AND a.max = a3.orden_iti;