我有一个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_ID
,FRN_RGN_ID
,FRN_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`)
...
答案 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 中,您可以根据需要定位每个列。