我希望为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
答案 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个单独的查询可能更可取。