par
HD » 01 janv. 2007, 18:12
suivi de
Code : Tout sélectionner
SELECT lotid, COUNT(DISTINCT cat) AS cnt
FROM lot
GROUP BY lotid
HAVING cnt = @var
Salut et merci à tous pour votre aide
supposons la table suivante :
Code : Tout sélectionner
--
-- Structure de la table `lot`
--
CREATE TABLE `lot` (
`id` int(11) NOT NULL auto_increment,
`lotid` int(11) NOT NULL default '0',
`cat` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Contenu de la table `lot`
--
INSERT INTO `lot` VALUES (1, 9, 0);
INSERT INTO `lot` VALUES (2, 7, 0);
INSERT INTO `lot` VALUES (3, 9, 1);
INSERT INTO `lot` VALUES (4, 6, 1);
INSERT INTO `lot` VALUES (5, 9, 2);
INSERT INTO `lot` VALUES (6, 6, 2);
INSERT INTO `lot` VALUES (8, 6, 0);
je vais executer le script suivant dessus :
<?
include ("connectbase.php");
$count = "SELECT COUNT(DISTINCT cat) FROM lot INTO @var";
$execCount = mysql_query($count) or die(mysql_error());
$selectCount = "SELECT lotid, COUNT(DISTINCT cat) AS cnt FROM lot GROUP BY lotid HAVING cnt = @var";
$execSelectCount = mysql_query($selectCount) or die(mysql_error());
$dataSelectCount = mysql_fetch_assoc($execSelectCount);
echo "D2BUT <br>";
print_r($dataSelectCount);
echo "<br> FIN";
?>
résultat :
D2BUT
Array ( [lotid] => 6 [cnt] => 3 )
FIN
vous remarquez donc qu'il n'affiche que le lotid 6 alors que le lotid 9 est également correct
j'ai l impression que cette erreur ne vient que de ma (mauvaise

) gestion des résultats de la 2ème requête SQL...
[quote="Hubert Roksor"][code]SELECT COUNT(DISTINCT cat)
FROM lot
INTO @var[/code]
suivi de
[code]SELECT lotid, COUNT(DISTINCT cat) AS cnt
FROM lot
GROUP BY lotid
HAVING cnt = @var[/code][/quote]
Salut et merci à tous pour votre aide
supposons la table suivante :
[code]--
-- Structure de la table `lot`
--
CREATE TABLE `lot` (
`id` int(11) NOT NULL auto_increment,
`lotid` int(11) NOT NULL default '0',
`cat` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Contenu de la table `lot`
--
INSERT INTO `lot` VALUES (1, 9, 0);
INSERT INTO `lot` VALUES (2, 7, 0);
INSERT INTO `lot` VALUES (3, 9, 1);
INSERT INTO `lot` VALUES (4, 6, 1);
INSERT INTO `lot` VALUES (5, 9, 2);
INSERT INTO `lot` VALUES (6, 6, 2);
INSERT INTO `lot` VALUES (8, 6, 0);[/code]
je vais executer le script suivant dessus :
[php]<?
include ("connectbase.php");
$count = "SELECT COUNT(DISTINCT cat) FROM lot INTO @var";
$execCount = mysql_query($count) or die(mysql_error());
$selectCount = "SELECT lotid, COUNT(DISTINCT cat) AS cnt FROM lot GROUP BY lotid HAVING cnt = @var";
$execSelectCount = mysql_query($selectCount) or die(mysql_error());
$dataSelectCount = mysql_fetch_assoc($execSelectCount);
echo "D2BUT <br>";
print_r($dataSelectCount);
echo "<br> FIN";
?>[/php]
résultat :
[quote]D2BUT
Array ( [lotid] => 6 [cnt] => 3 )
FIN[/quote]
vous remarquez donc qu'il n'affiche que le lotid 6 alors que le lotid 9 est également correct
j'ai l impression que cette erreur ne vient que de ma (mauvaise :?: :roll: ) gestion des résultats de la 2ème requête SQL...