2014-12-21 1 views
1

이것은 다시 THIS의 확장 된 계시입니다.다중 결과를 포함하는 데이터 표시

테이블 형식이 바뀌 었습니다. vendor_locations에 대해 별도의 테이블을 만들었습니다. 여기서 여러 위치에 해당 공급 업체 ID에 대해 여러 위치를 저장합니다. 또한 해당 공급 업체의 여러 제품을 저장하는 vendor_products 테이블을 만들었습니다.

이제는 내 문제가 있습니다. 표시하는 동안 두 제품 및 위치가 각 공급 업체에 대해 여러 개가되어 하나의 행에 표시하는 방법이 표시되지 않습니다.

제품이 3이고 위치가 2이면 모든 세부 사항이 세 번 표시됩니다. 위치 또는 제품을 제거하면 올바르게 작동합니다. 하지만 내가 어떻게 만 표시하고자하는 경우 필드에 모두

if(isset($_POST['submit'])) 
{ 
$sql="SELECT vendor.id AS venid 
, vendor.name AS VNAME 
, vendor.category 
, vendor.website 
, vendor.email 
, vendor.phone 
, vendor.vat 
, vendor.pan 
, items.name AS iname 
, location.name AS locname 
, items.item_id 
FROM vendor 
    INNER JOIN vendor_location ON vendor.id = vendor_location.vendor_id 
    INNER JOIN vendor_products ON vendor.id=vendor_products.vendor_id 
    INNER JOIN location ON vendor_location.location = location.loc_id 
    INNER JOIN items ON vendor_products.item_id=items.item_id 
    ORDER BY vendor.id"; 

} 

$sql1 = mysql_query($sql) or die(mysql_error()); 
} 

?> 
<div class="w-box w-box-blue"> 
          <div class="w-box-header"> 
           <h4>Vendor</h4> 
          </div> 
          <div class="w-box-content"> 

    <table id="dt_hScroll" class="table table-striped"> 
         <thead><tr> 
         <th>Vendor ID</th> 
         <th>Vendor</th> 
         <th>Category</th> 
         <th>Website</th> 
         <th>Email</th> 
         <th>Phone</th> 

         <th>VAT</th> 
         <th>PAN</th> 
         <th>Products</th> 
         <th>Locations</th> 




</tr> 

</thead> 
<tbody> 


<?php 
$current = '';   // STORE THE SUPPLIER SID 
    while($row = mysql_fetch_array($sql1)) { 
     if ($row['venid'] != $current) { 
      echo "<tr> 
       <td><a href='edit_vendor_details.php?id=$row[venid]'>{$row['venid']}</a></td> 
       <td>{$row['VNAME']}</td> 
       <td>{$row['category']}</td> 
       <td>{$row['website']}</td> 
       <td>{$row['email']}</td> 
       <td>{$row['phone']}</td> 
       <td>{$row['vat']}</td> 
      <td>{$row['pan']}</td> 
       "; 
      $current = $row['venid']; // RESET STORED SID 
     } 
     else { 
      echo "<tr><td colspan='8'>&nbsp;</td>"; 
     } 

     echo "<td>{$row['iname']}</td>"; 
     echo "<td>{$row['locname']}</td>"; 


     echo "</tr>"; 
    } 
    echo('</tbody></table>'); 


?> 
</tbody></table> 

답변

3

사용 group_concat이 작업을 수행 할 수 있습니다. 같은 :

SELECT vendor.id AS venid --rest of selection 
    , GROUP_CONCAT(location.name) AS locname 
    , GROUP_CONCAT(items.item_id) 
FROM vendor --rest of your joins 
GROUP BY vendor.id 

은 여기에 대한 자세한 내용을 참조하십시오. MySQL Aggregate Functions

+0

아니, 그것의 결과를 표시하지 제대로 :( – user2823107

+0

당신이지고있는 문제 –

+0

당신이 items.name에 대한 GROUP_CONCAT를 사용할 필요가 무엇인지, –

관련 문제