2013-12-11 3 views
1

나는 다음과 같은 MySQL의 테이블이 있습니다PHP 선택 중복 기록

M5 
xx 2 
xy 4 
zz 1 

M8 
ze 10 

내가 찾던 그룹에있는 방법을 찾는 것입니다 : 나는 테이블 출력은 이렇게 될

id store_t item qty 
1  M5  xx 2 
2  M5  xy 4 
3  M8  ze 10 
4  M5  zz 1 

을 원하는 store_t 복제본을 선택하고 을 반복하지 않고 itemqty을 출력합니다.

나는 mysql 문 안에서 GROUP BY store_t을 사용해 보았지만 store_t의 중복을 그룹화하지만 항목과 qty의 레코드 하나만 보여줍니다.

$query = "SELECT * from transfer_check GROUP BY store_t"; 
$result = mysql_query($query); 
if(mysql_num_rows($result)>0){ 

$num = mysql_num_rows($result); 
for($i=0;$i<$num;$i++){ 
$row = mysql_fetch_assoc($result); 

//Table Created for each Store 

echo "<table width=80% align=center border=2 cellpadding=3 cellspacing=0>"; 
echo "<tr><td align=center colspan=2>".$row['store_t']."</td></tr>"; 
echo "<tr><td align=center bgcolor=white><b>Item No.</b></td><td align=center 
bgcolor=lightgreen><b>QTY Transferred</b></td></tr>"; 

echo "<tr><td align=center><b>".strtoupper($row['item_no'])."</b></td><td align=center> <b>".$row['qty']."</b></td></tr>"; 
echo "</table>"; 


//End of i loop 
} 

답변

2

은 당신이 그들을 통해 반복 다음 store_t하여 결과를 주문하고 시도 해 봤나 : 여기

내 코드? 같은

뭔가 :

<?php 
    $query = "SELECT * from transfer_check ORDER BY store_t"; 
    $result = mysql_query($query); 
    ?><table><?php 
    while ($row = mysql_fetch_assoc($query)) { 
    ?><tr><?php 
     if (!isset($curStore) || $curStore != $row['store_t']) {    
      $curStore = $row['store_t']; 
      echo "<td colspan='2'>$curStore</td></tr><tr>"; 
     } 
     echo "<td>{$row['item']}</td><td>{$row['qty']}</td>"; 
     ?></tr> 
    }?> 
</table> 
2

당신은 SQL에서 그룹에 값을 GROUP_CONCAT을 사용하고 PHP 루프에서 결과를 분석 할 수 있습니다.

먼저 여기에 sql fiddle이 필요합니다.

SELECT DISTINCT 
    store_t, GROUP_CONCAT(DISTINCT item ORDER BY item) as items_list, 
    GROUP_CONCAT(DISTINCT qty ORDER BY qty) as qty 
FROM myTable 
    GROUP BY store_t 

결과는 다음과 같습니다

STORE_T ITEMS_LIST QTY 
M5  xx,xy,zz 1,2,4 
M8  ze   10 

이제 우리는 우리가 qtyitem의 값을 얻을 것이다 모든 행 (store_t)을 위해, 당신이 원하는 구조를 만들 루프 구유에이 결과를해야합니다. 배열로 나눕니다 (표시 전용).

$result = mysql_query($sql) or die('A error occured: ' . mysql_error()); 

while ($record = mssql_fetch_array($result)) { 
     $items_array = explode(",",$record['items_list']); 
     $qty_array = explode(",",$record['qty']); 
     echo $record['store_t'] . ": <br/>"; 
     for ($i=0; $i<sizeof($items_array); $i++) { 
      echo "Item:" . $items_array[$i] . " QTY: " . $qty_array[$i]; 
     } 
} 

출력 될 것이다

M5 
Item: xx QTY: 1 
Item: xy QTY: 2 

등 ...