mysql不同的多列

时间:2014-11-03 17:46:59

标签: php mysql

我希望为MySQL中的rowset中的每一列获取不同的行。这些是样本表: 系统表:

jcn system
1   server
1   workstation

问题表:

jcn   issue
1     "not working"

区域表:

jcn   area
1     102
1     103
1     104

我希望结果是:

system        area
server        102
workstation   103
              104

这可能吗?我会使用2个查询,但是我将它放在PHP的表中,并希望表格看起来像这样。 结果总是:

system       area
server       102
server       103
server       104
workstation  102
workstation  103
workstation  104

此结果来自使用

SELECT system, area FROM issues JOIN system USING (jcn) CROSS JOIN area USING (jcn) WHERE issues.jcn = 1

1 个答案:

答案 0 :(得分:0)

我不太确定你要做什么......

似乎你并没有试图“配对”系统和区域......在我看来,你似乎想要获得“系统”的所有可能值以及“区域”的所有可能值独立地

因此,如果这个假设是正确的,你可以在2个查询中进行(一个选择“DISTINCT(系统)”,另一个选择“DISTINCT(area)”)并在2个不同的数组中获取它们。如果您希望将结果合并为1个数组(如您给出的示例),则可以使用array_combine(http://php.net/manual/en/function.array-combine.php)。

您还可以保留实际拥有的查询,并使用键获取2个不同数组中的结果,以确保获得“不同”值:

$my_systems = array();
$my_area = array();
while ($row = $query->fetch()) { // or whatever method that lets you fetch your query row by row
   $my_systems[$row['system']] = $row['system'];
   $my_areas[$row['area']] = $row['area'];
}
$merged = array_combine(array_values($my_systems), array_values($my_areas)); // if you really need this in 1 merged array.

请注意,仅在1个查询中执行此操作将导致行数是count(distinct(系统))* count(distinct(area))的结果。使用2个单独的查询可能更可取。

相关问题