2017-12-13 13 views
0

私はid_supplierを商品テーブルに保存しています。私はそれをサプライヤIDと一緒に各アイテムコードのためにただ1つの行だけテーブルに表示することができました。私もサプライヤーの名前が必要ですが、私はIDと名前を分離する上で問題に直面しています。私はgroup_concat値をデータテーブルとチェックボックスにループする方法を教えてください

Code  | Supplier 
A001  | checkboxes value = 1 and then display supplier name beside....... and continue in the same row if more supplier 

を期待しています何

//query 
select code, group_concat(s.supplier_id,s.supplier_name) AS supplier_id_name 
from catalog c 
left join product p on p.product_id= c.product_id 
left join supplier s on s.supplier_id = p.product_id 
group by code; 


    //query will show following output 

    id supplier - 1, name - abc 
    id supplier - 2, name - def 

    Code  | Supplier 
    A001  | 1abc,2def // id and name of supplier 

コードとチェックボックスのために、すべてのサプライヤーの表示が目的を格納するためのサプライヤIDが含まれていますのチェックボックスがあります。

どうすればいいですか?

+1

私はあなたのプレゼンテーションでこれを扱うことを検討することをお勧めします層ではなく、純粋にMySQLで。 –

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ。ちなみに、おおまかな概算では、sqlではgroup_concatが答えの一部を形成する必要がある問題はありません。 – Strawberry

答えて

0

2つの解決策があります。

溶液1:バックエンドでまずグラブサプライヤIDと特定の文字で区切られた名前、およびその後:2

// Query 

SELECT CODE, 
     GROUP_CONCAT(CONCAT('<input type="checkbox" value="', s.supplier_id, '"> ', s.supplier_name) SEPARATOR ',') AS supplier_id_names 
    FROM catalog c 
    LEFT JOIN product p ON p.product_id= c.product_id 
    LEFT JOIN supplier s ON s.supplier_id = p.product_id 
    GROUP BY CODE; 

ソリューション:ちょうどMySQLが作曲HTMLコードは、次のSQLを使用して、自分自身を照会(PHPコードは以下)

$query= "SELECT CODE, 
       GROUP_CONCAT(CONCAT(s.supplier_id, ':', s.supplier_name) SEPARATOR '|||') AS supplier_id_names 
    FROM catalog c 
    LEFT JOIN product p ON p.product_id= c.product_id 
    LEFT JOIN supplier s ON s.supplier_id = p.product_id 
    GROUP BY CODE"; 
$result = mysqli_query($dbc,$query); 
while($row = mysqli_fetch_array($result)){ 
    // get html for each row 
    $checkboxHtml = ''; 
    $idSups = explode('|||', $row['supplier_id_names']); 
    foreach($idSups AS $s) { 
     list($i,$s) = explode(':', $s); 
     $checkboxHtml .= '<input type="checkbox" value="' . $i . '"> ' . $s; 
    } 
    // do something else... 
} 
関連する問題