0

tableA我有两个表:tableB我想打印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

我尝试了以下代码:

这里对于 id 中的每个 idtableA将有多个print_r($arr1)命令表示为FIRST. 在代码中,它正在打印重复的值,但命令 reperesent asSECOND正在获取正确的值。

我的问题是如何避免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);
}
?>
4

2 回答 2

0

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

于 2013-03-03T20:58:33.010 回答
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
于 2013-03-03T21:45:30.750 回答