php循环从第二个表获取值

时间:2013-03-03 20:54:53

标签: php mysqli

我有两个表:tableAtableB我想打印tableB的列值。 我的表结构如下:

Table A 
-id--------Name-----
 1          A
 2          B
 3          C
 4          D
--------------------


Table B

tableB_id-----------tableA_id-------------value-------
1                      1                    68
2                      1                    94
3                      1                    97
4                      1                    88
5                      1                    93
6                      1                    69
7                      1                    95
8                      2                    68
9                      2                    94
10                     3                    68
11                     4                    68
12                     4                    95
------------------------------------------------------

最终输出需要如下所示,值为逗号分隔

id------Name----------value-----------------------------------------
 1        A        68,94,97,88,93,69,95
 2        B        68,94
 3        C        68
 4        D        68,95

我尝试了以下代码:

此处tableA中的每个ID都会有多个print_r($arr1)命令,表示为FIRST。在代码中,它正在打印重复值,但命令重新显示为SECOND正在获取正确的值。

我的问题是我如何避免FIRST代码部分

中的重复值
<?php
$rs = mysqli_query($dbc,"SELECT * FROM `tableA`  limit $offset,$rows");
$items = array();   
$a=0;
while($row1 = mysqli_fetch_object($rs))
{ 
  $qry1 = mysqli_query($dbc,"SELECT tableB.value FROM tableA ,tableB WHERE tableA.`tableA_id`=tableB.`tableA_id` AND tableA.`tableA_id`='".$row->id."'");    
  $i=0;   
  while($row2 = mysqli_fetch_assoc($qry1))  
  {
    if($row2['id']=$row1->id)
    {
      $arr1 = $row2['value'];
    }
    print_r($arr1); // SECOND
    $i++;
  }   
  print_r($arr1); // FIRST
  array_push($items, $row1);
}
?>

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了这个问题 - 但我认为您可能正在寻找的是GROUP_CONCAT

答案 1 :(得分:0)

我认为GeoffK与GROUP_CONCAT走在正确的轨道上。尝试这样的事情:

SELECT tableA.id AS id,
       tableA.name AS name,
       GROUP_CONCAT( tableB.value ) AS value
FROM tableA
  JOIN tableB
    ON tableA.id = tableB.tableA_id
GROUP BY tableA.id