按类别显示查询结果

时间:2014-01-23 13:48:24

标签: php mysql

我有一个sql表“fournisseurs”,每行我有三列:

FRN_ID,FRN_RGN_ID,FRN_TYPE_ENTREE。

FRN_TYPE_ENTREE可以等于“LES FONTAINES A VINS”,“LES BOUTEILLES”或“PRODUITS CONNEXE”。

FRN_ID是制作人的身份。

FRN_RGN_ID是州的ID。 (波尔多,阿尔萨斯等......)。

我想展示这样的东西:

LES BOUTEILLES:

州的ID(FRN_RGN_ID)

LES FONTAINES VIN:

州的ID(FRN_RGN_ID)

PRODUITS CONNEXES:

州的ID(FRN_RGN_ID)

对于每一行我都有这些列(FRN_IDFRN_RGN_IDFRN_TYPE_ENTREE

我想在 PHP 中完成。

CREATE TABLE IF NOT EXISTS `fournisseur` (
  `FRN_ID` int(11) NOT NULL AUTO_INCREMENT,
  `FRN_RGN_ID` text NOT NULL,
  `FRN_TYPE_ENTREE` text NOT NULL,
  PRIMARY KEY (`FRN_ID`)
...

2 个答案:

答案 0 :(得分:2)

在php中:

$query = 'SELECT DISTINCT FRN_TYPE_ENTREE,
                          FRN_RGN_ID            
          FROM Fournisseurs ORDER BY FRN_TYPE_ENTREE';
// exec the query & cie
$prev_type = null;
foreach($results as $result) {
    if($prev_type != $result['FRN_TYPE_ENTREE']) {
       $prev_type = $result['FRN_TYPE_ENTREE'];
       echo $result['FRN_TYPE_ENTREE'];
    } 

    echo $result['FRN_RGN_ID'];
} 

SELECT FRN_TYPE_ENTREE, GROUP_CONCAT(DISTINCT FRN_RGN_ID) AS 'frn_rgn_ids'
FROM Fournisseurs
GROUP BY FRN_TYPE_ENTREE

答案 1 :(得分:1)

您可以在查询中使用 CASE 语句。

SELECT  CASE WHEN FRN_TYPE_ENTREE=`LES BOUTEILLES` then FRN_RGN_ID else NULL END AS 
`LES BOUTEILLES`, CASE WHEN FRN_TYPE_ENTREE=`LES FONTAINES A VINS` then FRN_RGN_ID 
else NULL END AS `LES FONTAINES A VINS`, CASE WHEN FRN_TYPE_ENTREE=`PRODUITS CONNEXES` 
then FRN_RGN_ID else NULL END AS `PRODUITS CONNEXES`   FROM  `fournisseur` 

您将获得每个或您的类别的旋转表或交叉选项卡:

LES BOUTEILLES  |  LES FONTAINES A VINS  |  PRODUITS CONNEXES
AUTRE              BORDEAUX
LOIRE              BORDEAUX
AUTRE              BORDEAUX  
LANGUEDOC ROUSSILLON
BORDEAUX           BORDEAUX

PHP 中,您可以根据需要定位每个列。