Résultat avec select count

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Résultat avec select count

par agité » 24 sept. 2008, 13:47

merci pour ta réponse.

En fait je crois que j'en aurais finalement plus besoin de la requête, projet annulé.

Je met Résolu.

par furiouslol » 23 sept. 2008, 15:31

mmm ok essaye de voir avec les instruction GROUP_CONCAT, ça va te permettre de construire des chaines de caractère conjointement avec ton group by

Par contre je suis plus tres sur de la syntaxe, ni de l'instruction précise, car il y en a plusieurs de ce type la, mais je l'avais deja utilisé pour sortir des résultats du type :

(12:4)

Ca te permet d'intercaller des caractères entre tes valeurs, ca pourrait bien te débloquer (partir sur le modèle de ta première requête)

par agité » 23 sept. 2008, 14:55

Si bien sur mais j'ai mis ici une partie de la liste de ce que contient les appartements et c'était plus "clair" de gérer ca dans une autre table, pour la table des immeuble par contre il ya 2 id une pour "online" et une pour la région je les ai donc stocké en début de table.

Sachant que les Id pour les appartements peuvent changer du jour au lendemain j'ai préférer utiliser cette méthode. Après ca simplifierai de peu les requêtes je n'ai qu'un INNER JOIN à faire lors de ma requête.

Sinon pour la requête a effectuer une idée ?

par furiouslol » 23 sept. 2008, 14:21

Yep mais en fait j'ai l'impression que cette table est en trop, tout ce qu'elle contient ne pourrait pas etre contenu dans la table des appartement ? Ça simplifierait fantastiquement tes requêtes

`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,

Ces champs ne sont ils pas liés a un appartement ?

par agité » 23 sept. 2008, 14:11

Salut, que représente ta table cat_prod_id ?
c'est une table de jointure pour cat_prod avec toute les Id qui vont être utilisé ensuite dans les autres jonctions.

Par exemple dans cat_prod je gère toute les informations directement écrites ensuite je gère selon des listages il y a des états, des orientations, des types etc ...

Donc la table cat_prod_id est la pour rappatrier les Id de tout ces éléments. Ensuite il y a cat_prod_genre, cat_prod_type, cat_prod_etat.

par furiouslol » 23 sept. 2008, 13:32

Salut, que représente ta table cat_prod_id ?

Résultat avec select count

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.