在SELECT查询中添加自定义行

时间:2011-05-16 15:49:44

标签: php mysql

我希望能够将自定义行添加到结果集中。假设我有以下查询:

SELECT x, y, count(*) c
FROM cache
WHERE cache_id = 1
GROUP BY cache_key

示例性结果可以是:

x   y   c
4   5   2
12  16  6

现在我想在结果集中添加相关的行。假设我想为每个结果添加4行,这些行具有相邻坐标,并且计数较低,以获得如下结果:

x   y   c
4   5   2   (original row)
3   5   1   (added rows)
5   5   1
4   4   1
4   6   1
12  16  6   (original row)
11  16  3   (added rows)
13  16  3
12  15  3
12  17  3

在图像中说出,而不是:

    2


           6

我想要这个:

    1
  1 2 1
    1
           3
         3 6 3
           3

纯MySQL有可能吗?如果没有办法实现这一点,结果将在PHP之后处理。

1 个答案:

答案 0 :(得分:0)

有可能进行自联接以完全在MySQL中实现这一点。但是,我认为这不是值得麻烦。

我的建议是在PHP中循环原始结果集并添加相邻坐标。最终结果将是您所需要的。

$coordinates = array();
while($row = mysql_fetch_assoc($result)) {
  array_push($coordinates, $row);

  // perform logic to add neighboring N, S, E, W coordinates to $coordinates
}