1. ✅ Apprenez une METHODE qui marche pour votre SEO ! Formation à distance avec Olivier Duffez et Fabien Facériès + aide pour prise en charge du financement
    Rejeter la notice

MySQL Help requête²

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Tomybe, 12 Avril 2013.

  1. Tomybe
    Tomybe WRInaute discret
    Inscrit:
    1 Février 2012
    Messages:
    193
    J'aime reçus:
    0
    Soit:

    SELECT id_contact, COUNT(id_contact) FROM Table WHERE id_zone IN (3,6) GROUP BY id_contact
    HAVING COUNT(id_contact) > 1

    Me permet de récuperer un contact habitant dans la zone 1 et la zone 6.

    Mais comment exclure un contact_id qui serait dans la zone 9 tant bien même il soit présent dans 3 et 6 ?

    Je sèche!
     
  2. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 190
    J'aime reçus:
    1
    WHERE id_zone IN (3,6) AND id_zone NOT IN (9)
     
  3. Tomybe
    Tomybe WRInaute discret
    Inscrit:
    1 Février 2012
    Messages:
    193
    J'aime reçus:
    0
    nop! ça ne marche pas il me garde quand meme le contact en 3,6
     
  4. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    et si tu rajoute un :
    WHERE id_contact NOT IN ( SELECT id_contact FROM Table WHERE id_zone = 9 GROUP BY id_contact )
     
  5. Tomybe
    Tomybe WRInaute discret
    Inscrit:
    1 Février 2012
    Messages:
    193
    J'aime reçus:
    0
    Ca peut fonctionne comme ça le souci est que sur un grand nombre de critère ça finirait par devenir une usine à gaz, une solution a été trouvé avec concat_group
     
  6. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 190
    J'aime reçus:
    1
    ça serait bien que tu donne l'équivalent de ta requête de départ ça permettrait d'avoir un topic avec réponse :wink: (et en plus je suis curieux de nature)
     
  7. Tomybe
    Tomybe WRInaute discret
    Inscrit:
    1 Février 2012
    Messages:
    193
    J'aime reçus:
    0
    Alors tu a une table comme ça :

    contact_id | id_zone
    10 5
    10 6
    10 8
    10 9

    Le but du jeu étant de récupérer tous les contacts présent dans la id_zone 5 et 6

    Mais il peut arriver qu'on veuille prendre tous les contacts dans la id_zone 5 et 6 sauf si il sont aussi dans la id_zone 8

    La première solution était
    Code:
    SELECT id_contact, COUNT(id_contact) FROM Table WHERE id_zone IN (3,6) GROUP BY id_contact 
    HAVING COUNT(id_contact) > 1
    On compte le nombre de fois ou le id_contact apparait pour s'assurer qu'il soit bien présent dans les deux zones que l'on souhaite.

    Le problème venait ensuite de filtrer ceux qui aurait été présent dans la 8

    là j'utilise un select concat_group(id_zone) as groupzone et dans le having groupzone like '3' and like '6' and not like '8' (en gros) et ça marche nickel
     
  8. shaman99
    shaman99 WRInaute discret
    Inscrit:
    23 Avril 2010
    Messages:
    156
    J'aime reçus:
    0
    Pour exclure la zone 8 je pense que tu peux ajouter NOT IN() :
    Code:
    AND NOT IN  (8) ou alors AND NOT IN  (SELECT `id_contact` FROM `Table` WHERE id_zone = 8) 
    Bon faut tester...
     
  9. Tomybe
    Tomybe WRInaute discret
    Inscrit:
    1 Février 2012
    Messages:
    193
    J'aime reçus:
    0
    Oui mais mais il peut y avoir autant d'exclusion que possible... et ça fait x select par inclusion/exclusion ça devient une véritable usine à gaz au finale. avec le concat_group on retourne un champ contenant toutes les zones séparé par des virgules et avec le having like les critères peuvent évolué pour facilement
     
Chargement...
Similar Threads - MySQL requête² Forum Date
Supprimer les doublons d'une table mysql Développement d'un site Web ou d'une appli mobile 16 Juin 2020
Mysql migration utf8->utf8mb4 Développement d'un site Web ou d'une appli mobile 17 Août 2019
recherche lettres dans mysql Développement d'un site Web ou d'une appli mobile 11 Juillet 2019
cache mysql maison Développement d'un site Web ou d'une appli mobile 18 Février 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019
message : [LEGACY][libmysqlclient] Please consider moving to stable and mysqlnd in Administration d'un site Web 8 Novembre 2018
Connexion à un serveur mysql distant Développement d'un site Web ou d'une appli mobile 21 Octobre 2018
Mysql, modifier des chaines avec différents caractères Administration d'un site Web 13 Septembre 2018
Fusionner deux champs sur la même table et même base de donnée Mysql Administration d'un site Web 12 Septembre 2018
Requête Mysql avec des string Développement d'un site Web ou d'une appli mobile 6 Février 2018