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

PHP & Base de données Discussion :

Demande aide sur requete


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Par défaut Demande aide sur requete
    Bonjour,
    je cherche à effectuer une requête pour rechercher les sociétés sur plusieurs activités.

    J'ai une table contacts qui contient mes societes, une table dr_activites qui contient mes activites et une table de liaison dr_activites_contacts qui contient id_activite (INT) et id_contact (INT).

    Ainsi, j'insère pour chaque id_contact les differentes id_activite

    Depuis un select multiple, je parviens à rechercher tous les contacts ayant les activites

    voici mon code qui est fonctionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	if(isset($_GET["dr_activites_contacts"]))
    	{
    		$filtres_activites=" dr_activites_contacts.id_activite IN (";
    		$act = 0;
    		$nb_act = count($_GET["dr_activites_contacts"]);
    		foreach($_GET["dr_activites_contacts"] as $valeur_activite)
    		{
    			if ($act == $nb_act - 1)
    			$filtres_activites.="'".$valeur_activite."'";
    			else
    			$filtres_activites.="'".$valeur_activite."',";
    			$act++;
    		} 
    		$filtres_activites.=") AND ";
    	}
    Seulement ce code permet de rechercher les contacts d'une activite ou une autre.

    Je voudrais faire ressortir uniquement les contacts dont l'activité est 1 ET 3 et 6 par exemple.

    J'ai essayé une requete de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM dr_activites_contacts WHERE  id_activite='2' AND id_activite='4'
    Mais ça ne marche pas.

    Quelle requête faire ?

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 11
    Par défaut
    Bonjour,

    Ca ne marche pas c'est à dire ?

    Et en partant sur une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM dr_activites_contacts WHERE  id_activite IN ('2', '4')
    Ca ne pourrait pas fonctionner ?

    Attention au type aussi '2' != 2.

    abcd23

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Par défaut
    Bonjour,

    c'est ce que j'indique dans mon post, la notion de WHERE IN recherche une activité OU une autre mais pas sur l'existence des deux activités.

    id_activite id_contact
    2 37
    2 56
    4 61

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    ... mais pas sur l'existence des deux activités.

    id_activite id_contact
    2 37
    2 56
    4 61
    Le problème, c'est que cette table ne représente pas cela.
    Tu recherches : 1 contact ayant des activités différentes
    Cette table représente : Des activités communes pour 1 contact (ce n'est pas pareil).

    Quand on dit "les 2 activités" (donc un ET), il faut que pour 1 même ID de contact il y ait ces 2 activités différentes réunies (la 2 ET 4).

    Or, dans les données que tu donnes, les IDs de contact (id_contact) sont tous différents.
    Ca ne peut pas marcher.


    Il faut que cette notion là y soit quelque part, quelque chose comme :
    activite | contact
    2 | 20
    4 | 20
    ... etc ...


    Est ce que parmi tes données (tables), il y a quelque chose qui pourrait permettre de représenter cela ?
    (sinon faudrait le créer).

    Tout cela sauf erreur.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Par défaut
    Comme indique précédemment j ai bien id_activite et id_contact dans la table je remplis ainsi
    Client 1 -football et basket
    Client 2 - basket et tennis
    Client 3 basket tennis et football


    Ce qui revient dans la table à
    61 - 2
    61-3
    62 - 3
    62-5
    63 - 3
    65 - 3
    65 - 5
    65 - 2

    Si je cherche tous les clients dont activités est football et tennis
    Je recherche id_activite =2 et id_activite=5

    Comment faire cette requete ?

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Est tu certain que 2 et 5 correspondent à des IDs d'activités (id_activite) ?
    Il y aurait pas confusion sur les valeurs par rapport aux noms des champs ?

    Si je regarde ce que tu as mis dans ton post précédent, l'ordre des champs étaient :
    id_activite | id_contact
    2 | 37

    Si j'extrapole par rapport à ce que tu mets maintenant, 2 et 5 correspondraient à des "contact_id" et non des "activite_id".

    Donc normalement, et cette fois en tenant compte les valeurs de ton post ci-dessus, on rechercherait plutôt avec des valeurs comme : 61 ET 65 (2 activités différentes pour 1 contact (le 2), par exemple.


    Fais le point la dessus, car pour moi ce n'est pas clair.

Discussions similaires

  1. Demande d'aide sur requete
    Par vinum dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/04/2009, 19h11
  2. Aide sur requete access
    Par Al soltani dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/03/2006, 11h58
  3. Besoin d'aide sur requetes imbriquées simples
    Par Kyti dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 10h52
  4. Aide sur requete PHP vers MySQL
    Par pounie dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/02/2006, 15h12
  5. aide sur requete mysql
    Par digger dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/01/2006, 10h54

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