par
agité » 06 juil. 2009, 10:40
Bonjour,
Le titre n'est pas très explicite ce que je cherche à faire c'est sélectionner des éléments d'un état et les produits se rapportant à cette élément mais avec un état différent :
J'ai des annonces, et des éléments pour ces annonces chacun de ces éléments peut avoir un état (1,2,3,4,5,6,7,8).
Ce que je souhaite faire c'est d'avoir toute les annonces qui ont des éléments différents de 7 mais aussi de compter ceux en état 3.
Pour l'instant j'arrive à ça :
Code : Tout sélectionner
SELECT COUNT(Id_cat_prod) As NbLotDispo,cat.Id As Id_prog,cat.Ville,cat.Cp,cat.Nom
FROM cat_prod_id
INNER JOIN cat ON (cat.Id = cat_prod_id.Id_cat)
INNER JOIN cat_prod ON (cat_prod.Id = cat_prod_id.Id_cat_prod)
WHERE Id_cat_region LIKE '".(!isset($_GET['region']) ? '%' : $_GET['region'])."'
AND Id_cat_prod_etat != 7
AND cat.Id_online = 1
AND cat_prod_id.Id_online = 2
GROUP BY cat_prod_id.Id_cat
ORDER BY NbLotDispo DESC,Cp ASC
Mais ça ne compte que les éléments en état différents de 7, comment avoir le COUNT sur les éléments en état 3 ?
Version du serveur: 5.0.51a-3ubuntu5.4
phpMyAdmin - 2.11.3deb1ubuntu1.1
Code : Tout sélectionner
CREATE TABLE IF NOT EXISTS `cat` (
`Id` int(11) NOT NULL auto_increment,
`Nom` varchar(255) collate utf8_unicode_ci NOT NULL,
`Adresse` varchar(255) collate utf8_unicode_ci default NULL,
`Cp` varchar(5) collate utf8_unicode_ci NOT NULL,
`Ville` varchar(70) collate utf8_unicode_ci NOT NULL,
`Id_cat_region` int(10) NOT NULL,
`Photo_0` varchar(255) collate utf8_unicode_ci default NULL,
`Photo_1` varchar(255) collate utf8_unicode_ci default NULL,
`Photo_2` varchar(255) collate utf8_unicode_ci default NULL,
`Id_online` int(1) NOT NULL default '0',
UNIQUE KEY `Id` (`Id`),
KEY `id_region` (`Id_cat_region`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=59 ;
cat_prod_id :
Code : Tout sélectionner
CREATE TABLE IF NOT EXISTS `cat_prod_id` (
`Id_cat_prod` int(11) NOT NULL,
`Id_cat` int(11) NOT NULL,
`Id_cat_prod_genre` int(10) NOT NULL,
`Id_cat_prod_orient` int(10) NOT NULL,
`Id_cat_prod_etat` text collate utf8_unicode_ci NOT NULL,
`Id_user` int(11) NOT NULL,
`Id_online` int(1) NOT NULL default '0',
PRIMARY KEY (`Id_cat_prod`),
KEY `id_programme` (`Id_cat`),
KEY `id_genre` (`Id_cat_prod_genre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Normalement ça devrait être suffisant pour les tables.
D'avance merci.
Bonjour,
Le titre n'est pas très explicite ce que je cherche à faire c'est sélectionner des éléments d'un état et les produits se rapportant à cette élément mais avec un état différent :
J'ai des annonces, et des éléments pour ces annonces chacun de ces éléments peut avoir un état (1,2,3,4,5,6,7,8).
Ce que je souhaite faire c'est d'avoir toute les annonces qui ont des éléments différents de 7 mais aussi de compter ceux en état 3.
Pour l'instant j'arrive à ça :
[code]SELECT COUNT(Id_cat_prod) As NbLotDispo,cat.Id As Id_prog,cat.Ville,cat.Cp,cat.Nom
FROM cat_prod_id
INNER JOIN cat ON (cat.Id = cat_prod_id.Id_cat)
INNER JOIN cat_prod ON (cat_prod.Id = cat_prod_id.Id_cat_prod)
WHERE Id_cat_region LIKE '".(!isset($_GET['region']) ? '%' : $_GET['region'])."'
AND Id_cat_prod_etat != 7
AND cat.Id_online = 1
AND cat_prod_id.Id_online = 2
GROUP BY cat_prod_id.Id_cat
ORDER BY NbLotDispo DESC,Cp ASC[/code]
Mais ça ne compte que les éléments en état différents de 7, comment avoir le COUNT sur les éléments en état 3 ?
[quote]
Version du serveur: 5.0.51a-3ubuntu5.4
phpMyAdmin - 2.11.3deb1ubuntu1.1
[/quote]
[code]CREATE TABLE IF NOT EXISTS `cat` (
`Id` int(11) NOT NULL auto_increment,
`Nom` varchar(255) collate utf8_unicode_ci NOT NULL,
`Adresse` varchar(255) collate utf8_unicode_ci default NULL,
`Cp` varchar(5) collate utf8_unicode_ci NOT NULL,
`Ville` varchar(70) collate utf8_unicode_ci NOT NULL,
`Id_cat_region` int(10) NOT NULL,
`Photo_0` varchar(255) collate utf8_unicode_ci default NULL,
`Photo_1` varchar(255) collate utf8_unicode_ci default NULL,
`Photo_2` varchar(255) collate utf8_unicode_ci default NULL,
`Id_online` int(1) NOT NULL default '0',
UNIQUE KEY `Id` (`Id`),
KEY `id_region` (`Id_cat_region`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=59 ;
[/code]
cat_prod_id :
[code]
CREATE TABLE IF NOT EXISTS `cat_prod_id` (
`Id_cat_prod` int(11) NOT NULL,
`Id_cat` int(11) NOT NULL,
`Id_cat_prod_genre` int(10) NOT NULL,
`Id_cat_prod_orient` int(10) NOT NULL,
`Id_cat_prod_etat` text collate utf8_unicode_ci NOT NULL,
`Id_user` int(11) NOT NULL,
`Id_online` int(1) NOT NULL default '0',
PRIMARY KEY (`Id_cat_prod`),
KEY `id_programme` (`Id_cat`),
KEY `id_genre` (`Id_cat_prod_genre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
[/code]
Normalement ça devrait être suffisant pour les tables.
D'avance merci.