2012-01-21 16 views
0

のGROUP_CONCATを内部ジョインを選択:私が正しく、データベースを照会する方法私は次のクエリを持って、SQLとPHP

Array (
[0] => Seller Name [name] => Seller Name 
[1] => Product1 [products] => Product1 
); 

$myquery = mysql_query("SELECT p.name, GROUP_CONCAT(m.name) as products 
        FROM access as pm 
        INNER JOIN seller as p on p.id = pm.id_seller 
        INNER JOIN products as m on m.id = pm.id_product 
        WHERE p.id = '".$_COOKIE['id_seller']."'"); 

私にこの配列を返しますか?私は3つのテーブル(製品、アクセスと売り手)を持っていることを考慮していただきありがとうございます。私が達成したいのは、1つ以上の製品を売り手に帰属させる(アクセスする)ことです。

そして、私のドロップダウンリストの人口コードはどのように見えるでしょうか?

<?php 
     echo'<select name="productaccess">'; 
foreach($myquery as $product) { 
     echo'<option value="'.$product.'">'.$product.'</option>'; 
} 
     echo'</select>'; 
?> 

ありがとうございます!

答えて

0

GROUP_CONCATは、存在しないGROUP BY句とともに使用されます。あなたのSQLに 'GROUP BY p.name'を追加してください。上記のSQLは、売り手名と商品名をカンマで区切って1行にします。その後、製品名を配列にバーストし、foreachループに送ります。

+0

おかげで、まだ動作していません... :(何か手掛かりかもしれない何か? –

1

の商品を1つだけの販売者にしたい場合は、まったくグループ化する必要はありません。ただ、製品の名前をリスト:今すぐ

$myquery = mysql_query("SELECT m.name 
        FROM access as pm 
        INNER JOIN seller as p on p.id = pm.id_seller 
        INNER JOIN products as m on m.id = pm.id_product 
        WHERE p.id = '".$_COOKIE['id_seller']."'"); 

$myqueryは、あなたがこのようなmysql_fetch_array()で後者を取得するので、唯一のリソース識別子ではなく、結果である:あなたの答えのための

while($row=mysql_fetch_array($myquery)) { 
    echo'<option value="'.$row['name'].'">'.$row['name'].'</option>'; 
} 
関連する問題