簡體   English   中英

選擇內部聯接,sql和php的group_concat

[英]select inner join, group_concat of sql and php

我有以下查詢:

$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']."'");

返回我這個數組:

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

我應該如何正確查詢數據庫? 感謝考慮到我有3個表(產品,訪問權和賣方)。 我想要實現的是將一種或多種產品歸因於(賣方)賣方。

以及我的下拉列表填充代碼的外觀如何?

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

謝謝!

如果您只需要一位賣家的產品,則根本不需要分組。 只需列出產品名稱:

$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>';
}

GROUP_CONCAT與不存在的GROUP BY子句一起使用。 在您的SQL中添加一個“按名稱組”。 這將使上面的SQL返回一行,其中賣方名稱和產品名稱以逗號分隔。 然后將產品名稱分解為一個數組,然后將其饋入foreach循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM