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

SQLite Discussion :

Requête avec tableau[]


Sujet :

SQLite

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Requête avec tableau[]
    Bonjour,

    voici mes tables :

    PRODUIT ( id_prod, nom_prod, .... no need....)

    MAGASIN (id_mag, nom_mag, ....no need...)

    VENDU (id_prod, id mag, ...no need...)

    Je gère une application Android qui permet d'afficher selon un choix de produits les magasins vendant TOUS les produits de cette liste !

    J'ai donc en entrée un tableau de string avec les noms des produits et je souhaite donc avoir le nom des magasins vendant les produits de ce tableau.

    Exemple :

    Tableau_produit [ 'pomme', 'orange', 'kiwi']

    si j'ai par exemple 4 magasins (Auchan, intermarché, lecler, babou) dont seulement Auchan et intermarché vendent les 3 produits, ma requête doit SEULEMENT renvoyer le nom des 2 magasins.

    j'arrive à faire la requête qui me permet d'avoir les magasins vendant 1 seul produit mais dès qu'on passe a un tableau avec plusieurs produits (nombre variable) je ne sais plus faire....

    Merci d'avance,

    delcambrem

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quelle requête exécutes-tu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Requête
    Bonjour,

    voici la requête que je lance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom_mag
    FROM MAGASIN M, VENDU V
    WHERE M.id_mag = V.id_mag AND V.id_prod IN 
                                                      (SELECT id_prod
                                                       FROM PRODUIT
                                                       Where nom_prod IN('Soja','Tomate');
    Et mon souci :

    Il affiche les magasins qui vendent du Soja et/ou des tomates ALORS que moi je veux seulement les magasins qui vendent les 2 !!

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Avec cette requête, si tu as plusieurs produits trouvés dans un magasin tu auras plusieurs lignes pour ce magasin.
    Il faut faire un regroupement par magasin et compter le nombre de produits trouvés par magasin.
    Tu ne précises pas s'il y a un seul id de produit par nom de produit. Si ce n'est pas le cas, ta requête sera moins simple mais toujours sur le même principe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT  mag.nom_mag
    FROM    magasin mag
        INNER JOIN
            vendu   vnd
            ON  mag.id_mag  = vnd.id_mag
        INNER JOIN
            produit prd
            ON  vnd.id_prod = prd.id_prod  
    WHERE   prd.nom_prod IN ('Soja', 'Tomate')
    GROUP BY mag.nom_mag
    HAVING  COUNT(DISTINCT prd.nom_prod) = 2
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Requete 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nom_mag
    FROM MAGASIN M, VENDU V
    WHERE M._id = V.id_mag AND V.id_prod IN 
                                                      (SELECT _id
                                                       FROM PRODUIT
                                                       WHERE nom_prod IN ('Soja','Tomate'))
    GROUP BY M.nom_mag
    HAVING  COUNT(DISTINCT M.nom_mag) = 2;

    j'ai lancé ça ....

    le problème est que le GROUP BY me regroupe les magasins !

    donc il supprime les doublons !

    Donc quand je demande les magasins dont ils sont affichés 2 fois , il y en a aucun !

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Citation Envoyé par delcambrem Voir le message
    si j'ai par exemple 4 magasins (Auchan, intermarché, lecler, babou) dont seulement Auchan et intermarché vendent les 3 produits, ma requête doit SEULEMENT renvoyer le nom des 2 magasins.
    Ce n'est pas ce que tu obtiens ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai reussi !!

    voila :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nom_mag
    FROM MAGASIN M, VENDU V, PRODUIT P
    WHERE M._id = V.id_mag AND P._id = V.id_prod AND V.id_prod IN 
    (SELECT _id
    FROM PRODUIT
    WHERE nom_prod IN ('Soja','Tomate'))
    GROUP BY M.nom_mag
    HAVING COUNT(DISTINCT P.nom_prod) = 2;
    MERCI pour ton aide !

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Question bête: on ne peux pas se passer de la sous-requête ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT nom_mag
    FROM MAGASIN M, VENDU V, PRODUIT P
    WHERE M._id = V.id_mag AND P._id = V.id_prod 
    and p.nom_prod IN ('Soja','Tomate')
    GROUP BY M.nom_mag
    HAVING COUNT(DISTINCT P.nom_prod) = 2;

    Tatayo.

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

Discussions similaires

  1. [AC-2007] lenteur tableau croisé d'une requête avec fonction vba que faire ?
    Par rogerfon dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/07/2012, 21h42
  2. [MySQL] Calcul dans requête avec tableau
    Par franck10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/11/2011, 15h37
  3. Finder TopLink requête avec parmètre tableau
    Par badreddine540 dans le forum Persistance des données
    Réponses: 1
    Dernier message: 07/06/2011, 09h16
  4. [SQL-Server] Parser un tableau pour exploitation dans une requête avec IN
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/05/2011, 11h54
  5. [Vxi3] Tableau de résultat de requête avec résultat autre requête
    Par SebastienM dans le forum Webi
    Réponses: 6
    Dernier message: 14/12/2009, 11h26

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