(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
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
(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.
-

magicaxe - WRInaute discret

- Messages: 151
- Inscription: 18 Oct 2004
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
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
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
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
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 les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [Résolu] Requête MySQL
- [Résolu]- Requête MySql
- Requête MySql [RESOLU MERCI]
- [Résolu] Requête MySQL - cumul de champs dans la condition
- Résolu : Besoin d'aide sur une requete MySQL
- MYSQL : jointure
- jointure mysql
- Jointure sur 2 serveurs Mysql ?
- Problème de jointure entre deux tables requête SQL
- Comment simplifier une double requête par jointure?
- Google API : guide de développement de l'API Google - 20-09-2002
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Les différents systèmes de mise en cache des données - 16-08-2010
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

