IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

calcul dans les requêtes et left join


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut calcul dans les requêtes et left join
    Bonjour,

    J'ai un petit soucis avec une requêtes qui me retourne pas ce que je veux.
    J'ai une table spectacle dans laquelle j'ai un id, le nom, le nb de places gratuites et le nombre de places payante.
    A coté j'ai une table place_prises dans laquelle j'ai l'id du spectacle, un id utilisateur, le nb de place payantes et gratuite prisent par ce user.
    Ce que je veux, c'est calculer en une requête, le nb de place payante et gratuite qu'il me reste.
    Voici mes tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    id_spectacle   	 nom   	 nb_place_gra_rest   	 nb_place_pay_rest
     	1 	MAHLER1 	    0 	                     10
     	2 	MAHLER2 	    0 	                     10
     	3 	CONFERENCE 	  5 	                     10
     
    id_spec   	 nb_place_pay   	 nb_place_gra
      1 	           1 	                 0
      3 	           0 	                 1
      1 	           2 	                 0
      3 	           0 	                 1
      1 	           2 	                 0
      3 	           0 	                 1
    Et voila ce que je veux obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RESULT :
    id_spec  nom   nb_place_gra_rest       nb_place_pay_rest
      1     MAHLER1      0                         5
      2     MAHLER2      0                         10
      3     CONF         2                         10
    Et voila ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT spectacle.id_spectacle, spectacle.nom, spectacle.nb_place_pay_rest - sum(user_spec.nb_place_pay) as pay_rest, 
           spectacle.nb_place_gra_rest - sum(user_spec.nb_place_gra) as gra_rest
    FROM spectacle left join user_spec  on spectacle.id_spectacle = user_spec.id_spec
    group by id_spectacle
    Le soucis c'est qu'elle me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_spectacle   	 nom   	 pay_rest   	 gra_rest
    1 	MAHLER1   	5 	         0
    2 	MAHLER2    	NULL 	      NULL
    3 	CONFERENCE 	10 	         2
    Mon soucis c'est les valeurs nulles.
    Comment empêcher ça ?
    Merci.
    Jérôme

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 52
    Points : 59
    Points
    59
    Par défaut
    Salut,
    Tu peux peut être essayer avec une jointure standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT spectacle.id_spectacle, spectacle.nom, spectacle.nb_place_pay_rest - sum(user_spec.nb_place_pay) AS pay_rest, 
           spectacle.nb_place_gra_rest - sum(user_spec.nb_place_gra) AS gra_rest
    FROM spectacle,user_spec where spectacle.id_spectacle = user_spec.id_spec
    GROUP BY id_spectacle
    A+
    C'est au pied du mur que l'on voit le mieux le mur!!!!!

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Ben non, si je prends une jointure standard, il ne me ramene pas MAHLER2 et donc je ne sais pas s'il reste des places pour ce spectacle...
    Jérôme

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Pas d'autres idées ?
    Jérôme

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Je pense que ton group by n'est pas bon : tu dois grouper sur id_spec de la table place_prises, non ??

  6. #6
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(IFNULL(user_spec.nb_place_gra, 0))
    ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Erreur de calcul dans les requêtes
    Par ortiz dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/10/2009, 15h49
  2. Calculer des moyennes dans les requêtes
    Par said2n dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 02/07/2008, 13h12
  3. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 10h57
  4. Aide pour une requête et left join
    Par Lolo19 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 08h09
  5. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo