l'asile.fr


Requette Mysql

J'ai la requette mysql suivante :


$query="SELECT idcatalbum,nomcatalbum,catalbum FROM catalbum,album WHERE catalbum=idcatalbum AND actif=1 ORDER BY nomcatalbum";
$result=mysql_query($query);


Sauf que dans cette requette, il me prend plusieurs fois des enregistrement, mais je souhaite que si des enregistrement sont identique, qu'il ne m'en prenne qu'un.

Je sais pas si je suis bien clair dans mon explication.


mercredi
30 decembre 2009 à 11:57
 
 

Bon en fait j'ai trouvé avec DISTINCT


mercredi
30 decembre 2009 à 12:05
 
 

Y'aurait pas un SELECT DISTINCT à faire ?

Chercher sur google avec ces mots clefs.

(désolé pas plus de temps)


mercredi
30 decembre 2009 à 12:06
 
 

Voila :)


mercredi
30 decembre 2009 à 12:06
 
 

A priori c'est un problème de produit cartésien dû à un problème de jointure donc il serait plus propre de résoudre le problème de la jointure que de coller un distinct.


mercredi
30 decembre 2009 à 12:08
 
 

yep tu as deux méthodes :

la première avec DISCTINCT la séconde avec GROUP BY

SELECT DISTINCT idcatalbum, nomcatalbum, catalbum
FROM catalbum, album
WHERE catalbum = idcatalbum AND actif=1
ORDER BY nomcatalbum;

SELECT idcatalbum, nomcatalbum, catalbum
FROM catalbum, album
WHERE catalbum = idcatalbum AND actif=1
GROUP BY idcatalbum, nomcatalbum, catalbum
ORDER BY nomcatalbum;

dans le GROUP BY tu mets la liste des champs sur lesquels tu veux faire ton regroupement, mais dans ce cas tu dois utiliser des fonctions de regroupements sur les autres champs que tu veux récupérer qui n'y appartiennent pas MIN, MAX, AVG, etc.


mercredi
30 decembre 2009 à 12:08
 
 

Apparemment c'est pour récupérer la liste des catégories pour lesquelles il existe au moins un album, tu peux biaiser avec des sous-requêtes, des vues, mais au final pour l'optimiseur ça reviendra au même.


mercredi
30 decembre 2009 à 12:10
 
 

Le DISTINCT me va bien, c'est pour un site qui va recevoir au moins 5 visites / jours alors l'optimisation n'a vraiment pas d'importance, mais merci pour les exemples et explications.


mercredi
30 decembre 2009 à 12:56
 
 


Répondre au sujet

Vous devez être identifié pour participer à ce topic.