Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour
J'ai du mal à comprendre comment écrire une requête php qui demande un "ni... ni..." ou un "et" absolu.
Je m'explique avec un exemple.
Soit 135 membres d'une association. Ils s'inscrivent à une des deux activités (activite1, activite2).
J'ai 3 tables : activites, membres, relationmembreactivite.
D'abord je veux contrôler qu'ils soient tous inscrits dans au moins une des deux activités.
J'écris quelque chose qui ressemble à " SELECT * FROM membres, activites, relationmembreactivite WHERE membres.idmembre=relationmembreactivite.idmembre AND activites.idactivite=relationmembreactivite.idactivite AND activites.idactvite=activite1 AND(ou bien OR ?) activites.idactivite=activite2.
Faut-il mettre des parenthèses ? Où les mettre ? Faut-il mettre AND ou OR ? Quand je mets AND, est-ce que je vais additionner ceux qui font l'activité 1 et ceux qui font la 2, ou afficher ceux qui se sont inscrits aux deux ?
Ensuite, je veux contrôler qu'aucun membre n'est inscrit dans les 2 activités, que personne n'est inscrit à plus qu'une activité. Ca me permettra de repérer les erreurs.
Comment faire pour que je n'aie pas ceux qui ne font pas l'activité 1 + ceux qui ne font pas l'activité 2, c'est-à-dire tout le monde ?
Je n'ai vraiment pas un cerveau de matheux...
Merci aux patients qui me répondront.
Hors ligne
Bonjour,
Evitez tout d'abord de passer par un produit cartésien filtré dans la construction de votre requête et utilisez les opérateurs INNER JOIN, LEFT JOIN et RIGHT JOIN de préférence, sauf quand l'exercice requiert spécifiquement l'emploi du produit cartésien.
En effet, il est important, d'autant plus lorsque l'on débute comme vous de distinguer ce qui relève des conditions de jointure et des conditions de filtrage lorsque on place le tout dans une condition WHERE. Ce n'est pas en effet parce que vous n'utilisez pas d'opérateur de jointure explicitement que vous n'en faites pas.
Pour répondre à vos questions le AND et le OR sont toujours inclusifs dans une requête.
Ensuite si vous souhaitez un coup de main dans l'écriture de vos requêtes, merci de nous fournir un SHOW CREATE TABLE pour chacune de ces 3 tables.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci JC de Zillisheim (la dernière fois que j'y suis allé c'était pour écouter de la guitare manouche).
Quand j'ai lu votre message je me suis dit que j'avais du travail... Je suis donc allé mettre sur google "jointure et filtrage en php". Première réponse de google : un site pour le cannabis...
Je vais étudier (ailleurs) comment fonctionnent les jointures et ce qu'est qu'un produit cartésien filtré. Je vous remercie en attendant et je reviendrai probablement plus tard...
Philippe Bader, Issenheim
Hors ligne
Un peut de lecture pour vous aider
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Pages :: 1