0

私は 2 つのテーブルを持っています:の列の値を出力したいと思いtableAます。私のテーブル構造は以下の通りです:tableBtableB

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 に対して、として表さtableAれる複数の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);
}
?>
4

2 に答える 2

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 に答える
0

質問を正しく理解しているかどうかはわかりませんが、探しているのはGROUP_CONCATだと思います

于 2013-03-03T20:58:33.010 に答える