Page 1 sur 1

Résultat requête vide

Posté : 22 oct. 2005, 19:26
par luc_13
Je cherche à afficher le contenu du champ "parfum" et "parfumeur" de la table "miniature" quand le champ "cote" a la valeur la plus grande.
Après bricolage de débutant, j'arrive à ceci :

Code : Tout sélectionner

<?php mysql_connect($host, $login,$passwd) or die("erreur de connexion au serveur"); mysql_select_db($base) or die("erreur de connexion a la base de donnees"); $result = mysql_query("SELECT parfum, parfumeur FROM miniature WHERE cote ='(SELECT MAX(cote) FROM mcgallery)'"); if (!$result) { echo 'Impossible d\'exécuter la requête : ' . mysql_error(); exit; } $row = mysql_fetch_row($result); echo $row[0]; echo ' - '; echo $row[1]; mysql_close(); ?>
Tout ceci me donne un résultat vide.
Le plus cher : 31.50 € ( - )
Alors que lors de mon premier essai en indiquant la valeur pour cote :

Code : Tout sélectionner

$result = mysql_query("SELECT parfum, parfumeur FROM miniature WHERE cote = '31.50'");
Il m'affiche bien mon résultat :
Le plus cher : 31.50 € (Habit rouge - GUERLAIN)
Je tourne en rond, pouvez vous me donner quelques éclairsissement, capte plus !
Merci :oops:

Posté : 22 oct. 2005, 19:36
par Cyrano
Attention: quelle version de MySQL : les requêtes imbriquées ne sont supportées qu'à partir de mysql 4.1.++

Posté : 22 oct. 2005, 20:06
par Xenon_54
Je crois que ceci serait plus adéquat:

Code : Tout sélectionner

SELECT miniature.parfum, miniature.parfumeur FROM miniature, mcgallery WHERE mcgallery.cote=MAX(mcgallery.cote)
Solution à tester ;)

Posté : 22 oct. 2005, 21:01
par luc_13
J'ai fait une petite erreur à force de modifier mon code,
<?php
mysql_connect($host, $login,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("erreur de connexion a la base de donnees");
$result = mysql_query("SELECT parfum, parfumeur FROM miniature WHERE cote ='(SELECT MAX(cote) FROM miniature)'");
if (!$result) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0];
echo ' - ';
echo $row[1];
mysql_close();
?>
Lire miniature au lieu de mcgallery, :oops: , tous les champs sont dans la même table.

J'ai fait un test avec le code de Xenon_54, en remplaçant mcgallery par miniature, j'ai le message suivant :
Le plus cher : 31.50 € (Impossible d'exécuter la requête : Table/alias: 'mcgallery' non unique
Côté matériel :
EasyPHP 1.7 - PHP 4.3.3 - PhpMyadmin 2.5.3 et MySQL 4.0.15, je vais essayer d'installer plus récent comme l'indique Cyrano et tester les 2 versions de code.

Grand merci pour vos réponses rapides

Posté : 22 oct. 2005, 21:23
par Cyrano
Procède différemment alors:

Code : Tout sélectionner

SELECT parfum, parfumeur FROM miniature ORDER BY cote DESC LIMIT 0,1
On recherche en triant sur la colonne "cote" du plus grand au plus petit et on limite la récupération à la première ligne.

Posté : 23 oct. 2005, 07:01
par luc_13
C'est beaucoup plus simple et celà fonctionne parfaitement. Merci.