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 :

Select avec in ou exists


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Par défaut Select avec in ou exists
    Bonjour à tous,
    Je travaille avec la version 5 de MySql.

    J'ai une table Rayon avec id_r, nom, place
    Et une table Article avec id_a, id_rayon, reference, prix, quantite

    Je souhaite faire la somme des quantite des articles présents dans les rayons qui abritent un article avec un reference LIKE 'maref%'.
    Je ne sais pas si je suis trop claire là mais je vais essayé de vous montré ce que je souhaite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nom_rayon      reference    quantite
    ------------  -----------  ---------
    toto           maref1       5
    toto           azerty       12
    toto           querty       6
    J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT nom, reference, quantite
    FROM Article
    JOIN Rayon ON id_r = id_rayon
    WHERE reference LIKE 'maref%'
    Mais, logique, ça me renvoie que la ligne avec la quantite de maref1

    Alors j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT nom, reference, quantite
    FROM Article
    JOIN Rayon ON id_r = id_rayon
    WHERE EXISTS (SELECT * FROM Article WHERE reference LIKE 'maref%' )
    Mais ça me renvoie des ligne en plus, des rayons qui n'ont pas d'article qui ont une reference correspondante.

    J'ai essayé un IN au lieu de EXISTS mais ça ne fonctionne pas non plus.

    Quelqu'un pourrait il me dire d'ou vient mon erreur ?
    Merci d'avance à tous !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Par défaut
    Essaye cette syntaxe, je crois bien que c'est ca

    SELECT nom, reference, SUMquantite
    FROM Article
    JOIN Rayon ON id_r = id_rayon
    WHERE reference LIKE 'maref%'
    group by reference

    la fonction SUM ajoutte tes quantité et le group by permet de faire cette somme que sur la référence maref.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Ta question est ambigue. Tu écris quelquechose mais ton select (et ton tableau) dit autre chose. Tu veux faire la SOMME des produits de même rayon que maref% ou bien tu veux la LISTE des produits de même rayon que maref%? Dans le premier cas il faut rajouter une fonction SUM avec un GROUP BY.
    Dans les deux cas, il faut d'abord récupérer le nom des rayons qui possèdent maref%

    Pour avoir la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT nom, reference, quantite
    FROM Article
    JOIN Rayon ON id_r = id_rayon
    WHERE id_rayon = (SELECT id_rayon
                               FROM Rayon
                               JOIN Article ON id_rayon = id_r
                               WHERE reference LIKE 'maref%');
    et pour avoir la quantité de chaque produit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT nom, SUM(quantite)
    FROM ....
    ....
                   WHERE reference LIKE 'maref%');
    GROUP BY nom;

    voilà
    Tiens nous au courant ! merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Par défaut
    En fait je veux faire la liste des articles qui se trouve dans le même rayon que maref%.
    Je ne pense pas que le = fonctionnera parce que je peux avoir plusieurs résultats. Par exemple dans le rayon toto maref1 et dans le rayon titi maref2.
    Donc dans ce cas, je voudrais savoir quels sont les articles qui se trouvent dans toto et titi.

    Merci en tous cas pour vos réponses. Je vais essayé avec le = quand même !
    Si vous avez d'autres idées, je suis preneuse !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    excuse moi, c'est une erreur de ma part... j'ai mis = au lieu de IN ! Mais tu as raison c'est bien IN puisque la sous-requête peut renvoyer plusieurs résultats

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Par défaut
    Oui mais quand je mets in et que je teste ma requete sous mysql, elle mets un temps enorme à s'excecuter et fini par planter...
    D'où mon test avec exists mais ça me renvoi des résultats incorects (par exemple rayon tutu qui ne contient pas d'article en maref%)

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2004, 14h51
  2. requete select avec AS remplacement de valeur
    Par pi3141563 dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/04/2004, 22h15
  3. [Eclipe 2.1.1]Projet avec fichiers sources existants
    Par mfofana dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/02/2004, 05h20
  4. pb de select avec size avec choix multiple
    Par La_picolle dans le forum ASP
    Réponses: 10
    Dernier message: 28/08/2003, 15h21
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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