0

サンプルデータベースがあります:

brand(id, name)
     (1, 'Apple')
     (2, 'Dell') 
model(id, name, brand_id)
     (1, 'Macbook', 1)
     (2, 'Iphone', 1)
     (3, 'Vostro', 2)

そしてphp mysqlコード:

<?php
// Make a MySQL Connection
$query = "SELECT * FROM model";  
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
$brand_id = array();
$brand_id = array_unique($row['brand_id']);
?>    
<table>
    <?php for($i=0; $i<count(brand_id); $i++) {?>
    <tr>
        <td><?php echo $row['name'] ?></td>
    <tr/>
    <?php }?>
</table>

結果は 2 つの brand_id の 2 つの tr を返しますが、すべてのモデル名の結果が表示されます

<table>
   <tr><td>Macbook, Iphone, Vostro</td></tr>
   <tr><td>Macbook, Iphone, Vostro</td></tr>        
</table>

それを結果に修正する方法は次のとおりです。

<table>
   <tr><td>Macbook, Iphone</td></tr>
   <tr><td>Vostro</td></tr>        
</table>
4

1 に答える 1

4

そのためには、集計関数 を使用する必要がありますGROUP_CONCAT

SELECT  GROUP_CONCAT(b.`name`)
FROM    brand a 
            INNER JOIN model b
                on a.id = b.brand_id
GROUP BY a.`Name`

デモ @ SQLFIDDLE については、こちらを参照してください。

于 2012-07-22T04:13:50.963 に答える