par
agité » 23 sept. 2008, 10:20
Bonjour,
Dans ma base SQL j'ai des immeubles et des appartements, les immeubles sont cat et les appartements cat_prod.
Les tables :
CREATE TABLE `cat_prod` (
`Id` int(11) NOT NULL auto_increment,
`Adresse` varchar(100) default NULL,
`Charges_mensuel` float default NULL,
`Code` varchar(10) NOT NULL,
`Commentaires_etat` text NOT NULL,
`Date_chgmt_etat` datetime default NULL,
UNIQUE KEY `Id` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7407 ;
CREATE TABLE `cat_prod_id` (
`Id_cat_prod` int(11) NOT NULL,
`Id_cat` int(11) NOT NULL,
`Id_cat_prod_autre` varchar(250) default NULL,
`Id_cat_prod_genre` int(11) NOT NULL,
`Id_cat_prod_orient` int(11) NOT NULL,
`Id_cat_prod_type` int(11) NOT NULL,
`Id_cat_prod_fisc` int(11) NOT NULL,
`Id_cat_prod_etat` int(11) NOT NULL,
`Id_user` int(11) NOT NULL,
`Id_online` int(11) NOT NULL,
UNIQUE KEY `Id_cat_prod` (`Id_cat_prod`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `cat` (
`Id` int(11) NOT NULL auto_increment,
`Id_online` int(11) NOT NULL default '0',
`Id_cat_secteur` int(11) NOT NULL,
`Id_cat_zone` int(11) NOT NULL,
`Nom` varchar(150) NOT NULL,
`Adresse` varchar(100) NOT NULL,
`Cp` varchar(5) NOT NULL,
`Ville` varchar(100) NOT NULL,
`Presentation_fr` longtext NOT NULL,
`Presentation_en` longtext NOT NULL,
`Commentaires` longtext,
`Nombre_lots` varchar(50) NOT NULL,
`Numero_police` varchar(100) NOT NULL,
`Date_livraison` varchar(100) NOT NULL,
UNIQUE KEY `Id` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=386 ;
Je voudrais faire une synthèse en limitant le nombre de requêtes, dans cette synthèse doit apparaitre le type de bien (exemple un F1) et ensuite lister selon l'état.
Un exemple :
Type | loué | non loué | Total
F1 | appart1, appart2 | appart3, appart 4 | 4
Donc je fais une requete comme celle ci :
SELECT COUNT(cat_prod.Id) AS Total,
cat_prod.Code,
cat_prod.Id,
cat_prod_type.Libelle As Type,
cat_prod_id.Id_cat_prod_etat
FROM cat_prod
INNER JOIN cat_prod_id ON (cat_prod_id.Id_cat_prod = cat_prod.Id)
INNER JOIN cat_prod_type ON (cat_prod_type.Id = cat_prod_id.Id_cat_prod_type)
WHERE cat_prod_id.Id_online = '2'
AND cat_prod_id.Id_cat = '".$Array_Programme['Id']."'
GROUP BY cat_prod_id.Id_cat_prod_type
avec cette requete j'obtiens bien le type et le total mais il ne me retourne que le premier appartement et le premier état (loué).
Hors je pense qu'en une requête il est possible de faire toute la requête.
Lorsque je fais ca :
SELECT cat_prod.Code,
cat_prod.Id,
cat_prod_type.Libelle As Type,
cat_prod_id.Id_cat_prod_etat
FROM cat_prod
INNER JOIN cat_prod_id ON (cat_prod_id.Id_cat_prod = cat_prod.Id)
INNER JOIN cat_prod_type ON (cat_prod_type.Id = cat_prod_id.Id_cat_prod_type)
WHERE cat_prod_id.Id_online = '2'
AND cat_prod_id.Id_cat = '".$Array_Programme['Id']."'
J'obtiens la liste mais sans le total et avec le type répété a chaque ligne.
Avez vous une idée pour avoir la liste de tout les appartements, leur état, le total et le type regroupé sur une seul ligne.
D'avance merci.
Bonjour,
Dans ma base SQL j'ai des immeubles et des appartements, les immeubles sont cat et les appartements cat_prod.
Les tables :
[php]CREATE TABLE `cat_prod` (
`Id` int(11) NOT NULL auto_increment,
`Adresse` varchar(100) default NULL,
`Charges_mensuel` float default NULL,
`Code` varchar(10) NOT NULL,
`Commentaires_etat` text NOT NULL,
`Date_chgmt_etat` datetime default NULL,
UNIQUE KEY `Id` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7407 ;[/php]
[php]CREATE TABLE `cat_prod_id` (
`Id_cat_prod` int(11) NOT NULL,
`Id_cat` int(11) NOT NULL,
`Id_cat_prod_autre` varchar(250) default NULL,
`Id_cat_prod_genre` int(11) NOT NULL,
`Id_cat_prod_orient` int(11) NOT NULL,
`Id_cat_prod_type` int(11) NOT NULL,
`Id_cat_prod_fisc` int(11) NOT NULL,
`Id_cat_prod_etat` int(11) NOT NULL,
`Id_user` int(11) NOT NULL,
`Id_online` int(11) NOT NULL,
UNIQUE KEY `Id_cat_prod` (`Id_cat_prod`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;[/php]
[php]CREATE TABLE `cat` (
`Id` int(11) NOT NULL auto_increment,
`Id_online` int(11) NOT NULL default '0',
`Id_cat_secteur` int(11) NOT NULL,
`Id_cat_zone` int(11) NOT NULL,
`Nom` varchar(150) NOT NULL,
`Adresse` varchar(100) NOT NULL,
`Cp` varchar(5) NOT NULL,
`Ville` varchar(100) NOT NULL,
`Presentation_fr` longtext NOT NULL,
`Presentation_en` longtext NOT NULL,
`Commentaires` longtext,
`Nombre_lots` varchar(50) NOT NULL,
`Numero_police` varchar(100) NOT NULL,
`Date_livraison` varchar(100) NOT NULL,
UNIQUE KEY `Id` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=386 ;[/php]
Je voudrais faire une synthèse en limitant le nombre de requêtes, dans cette synthèse doit apparaitre le type de bien (exemple un F1) et ensuite lister selon l'état.
Un exemple :
Type | loué | non loué | Total
F1 | appart1, appart2 | appart3, appart 4 | 4
Donc je fais une requete comme celle ci :
[php]SELECT COUNT(cat_prod.Id) AS Total,
cat_prod.Code,
cat_prod.Id,
cat_prod_type.Libelle As Type,
cat_prod_id.Id_cat_prod_etat
FROM cat_prod
INNER JOIN cat_prod_id ON (cat_prod_id.Id_cat_prod = cat_prod.Id)
INNER JOIN cat_prod_type ON (cat_prod_type.Id = cat_prod_id.Id_cat_prod_type)
WHERE cat_prod_id.Id_online = '2'
AND cat_prod_id.Id_cat = '".$Array_Programme['Id']."'
GROUP BY cat_prod_id.Id_cat_prod_type[/php]
avec cette requete j'obtiens bien le type et le total mais il ne me retourne que le premier appartement et le premier état (loué).
Hors je pense qu'en une requête il est possible de faire toute la requête.
Lorsque je fais ca :
[php]SELECT cat_prod.Code,
cat_prod.Id,
cat_prod_type.Libelle As Type,
cat_prod_id.Id_cat_prod_etat
FROM cat_prod
INNER JOIN cat_prod_id ON (cat_prod_id.Id_cat_prod = cat_prod.Id)
INNER JOIN cat_prod_type ON (cat_prod_type.Id = cat_prod_id.Id_cat_prod_type)
WHERE cat_prod_id.Id_online = '2'
AND cat_prod_id.Id_cat = '".$Array_Programme['Id']."' [/php]
J'obtiens la liste mais sans le total et avec le type répété a chaque ligne.
Avez vous une idée pour avoir la liste de tout les appartements, leur état, le total et le type regroupé sur une seul ligne.
D'avance merci.