(Résolu par une jointure)[MYSQL] Dissocier ma requête ?
6 messages • Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
(Résolu par une jointure)[MYSQL] Dissocier ma requête ?
Salut,
en fait j'ai un pb de requête MYSQL
J'ai deux tables :
- table voitures
- table soumissions
Je chercher à afficher une tableau tout con qui contient :
- Le nombre de fois qu'un modèle appararait ds la table soumissions ( ex : 5 Clio, 3 Ferrari )
- Le modèle ( Clio, Ferrari etc )
- 0 si la voiture n'est pas déja ds la table voitures ou sinon le nombre de fois qu'elle est présente dans la bdd en prenant le champs nb de ce modèle dans la table voitures
J'en suis rendu à ce code :
Ce code marche presque parfaitement sauf que le nb_new est faux ! Ca me renvoie des nombres qui n'ont rien à voir.. Je crois que ça part en live parce que j'ai indiqué 2 tables dans le FROM et que pour une raison le COUNT s'embrouille.
Qqun sait comment je pourrais faire ? Merci
en fait j'ai un pb de requête MYSQL
J'ai deux tables :
- table voitures
- table soumissions
Je chercher à afficher une tableau tout con qui contient :
- Le nombre de fois qu'un modèle appararait ds la table soumissions ( ex : 5 Clio, 3 Ferrari )
- Le modèle ( Clio, Ferrari etc )
- 0 si la voiture n'est pas déja ds la table voitures ou sinon le nombre de fois qu'elle est présente dans la bdd en prenant le champs nb de ce modèle dans la table voitures
J'en suis rendu à ce code :
- Code: Tout sélectionner
SELECT
s.modèle,
COUNT(s.modèle) AS nb_new,
CASE WHEN s.modèle = v.modèle THEN v.nb ELSE 0 END AS nb
FROM
voitures v, soumissions s
GROUP BY
s.modèle
Ce code marche presque parfaitement sauf que le nb_new est faux ! Ca me renvoie des nombres qui n'ont rien à voir.. Je crois que ça part en live parce que j'ai indiqué 2 tables dans le FROM et que pour une raison le COUNT s'embrouille.
Qqun sait comment je pourrais faire ? Merci
Dernière édition par Chacho le Mar Juin 17, 2008 13:48, édité 1 fois.
Dans ton cas - et si j'ai bien compris le problème - tu est obligé d'utiliser une jointure externe (car des modèle peuvent exister dans la table soumission mais pas dans la table voiture). Dans ce cas, le code SQL est le suivant:
- Code: Tout sélectionner
SELECT
s.modèle,
COUNT(s.modèle) AS nb_new,
CASE WHEN v.modèle IS NULL THEN 0 ELSE v.nb END AS nb
FROM
soumissions s
RIGHT JOIN voiture v ON v.modèle = s.modèle
GROUP BY
s.modèle
Merci magicaxe tu as bien compris le pb
Ta proposition s'approche du résultat souhaité mais ce n'est pas encore ça
Si dans ma table soumissions, j'ai :
2 fois le modèle Clio qui n'existe pas dans voitures ;
1 fois le modèle Twingo qui existe déja 6 fois dans voitures ;
j'obtiens ceci :
Donc bon pour la ligne Twingo mais faux pour les 2 soumissions de Clio !
J'ai changé ainsi :
et c'est un peu mieux :
mais c'est pas tout à fait ça :S
Ta proposition s'approche du résultat souhaité mais ce n'est pas encore ça
Si dans ma table soumissions, j'ai :
2 fois le modèle Clio qui n'existe pas dans voitures ;
1 fois le modèle Twingo qui existe déja 6 fois dans voitures ;
j'obtiens ceci :
- Code: Tout sélectionner
modèle nb_new nb
NULL 0 1
Twingo 1 6
Donc bon pour la ligne Twingo mais faux pour les 2 soumissions de Clio !
J'ai changé ainsi :
- Code: Tout sélectionner
SELECT
s.modèle,
COUNT(s.modèle) AS nb_new,
CASE WHEN [b]s[/b].modèle IS NULL THEN 0 ELSE v.nb END AS nb
FROM
soumissions s
RIGHT JOIN voiture v ON v.modèle = s.modèle
GROUP BY
s.modèle
et c'est un peu mieux :
- Code: Tout sélectionner
modèle nb_new nb
NULL 0 0
Twingo 1 6
mais c'est pas tout à fait ça :S
J'ai remplacé RIGHT par LEFT et ça marche
Je comprends pas trop les JOIN mais bon ça marche ! Merci bien
- Code: Tout sélectionner
SELECT
s.modèle,
COUNT(s.modèle) AS nb_new,
CASE WHEN v.modèle IS NULL THEN 0 ELSE v.nb END AS nb
FROM
soumissions s
LEFT JOIN voiture v ON v.modèle = s.modèle
GROUP BY
s.modèle
6 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gestion des langues et des sessions en PHP / MySQL
- Passage à l'heure d'été/hiver sur un forum phpBB
- Ecrire un sitemap pour Google News
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Sortie officielle de GoogleStats v2.0 !
- Statistiques des requêtes sur les moteurs en 2006
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Le WRInaute du moment
- Google facilite les recherches par site
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité




le forum