Sélection de champs avec une liste de conditions
Fermé
yaplidop
-
15 janv. 2015 à 16:33
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 - 17 janv. 2015 à 02:09
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 - 17 janv. 2015 à 02:09
A voir également:
- Sélection de champs avec une liste de conditions
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
- Liste de numéro de téléphone suspect - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
3 réponses
watarux
Messages postés
266
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
30 janvier 2023
42
15 janv. 2015 à 16:41
15 janv. 2015 à 16:41
bonjour je ne suis pas un pro mais je pense que ce que tu essaye de faire n'est pas possible si tu veux pouvoir faire une requête liant 2 table d'une base de donnée je dirais d'utiliser JOIN en msql il y a plusieurs façon de faire une jointure tu devrais y trouver ton bonheur
https://sql.sh/cours/jointures/inner-join
https://sql.sh/cours/jointures/inner-join
J'ai trouvé une solution. C'est de la bidouille mais elle fonctionne. Je crée une nouvelle contrainte d'identifiant idContrainte = 0 qui est associée par "requiert" à toutes les "annonce"s. La requête à faire est ensuite :
SELECT idAnnonce FROM annonce
INNER JOIN requiert ON requiert.idAnnonce = annonce.idAnnonce
WHERE idContrainte IN($listeContraintes)
GROUP BY annonce.idAnnonce
HAVING COUNT(idRequirement) = 1;
Le but étant de ne prendre que les annonces dont le nombre de contraintes non dans la liste est 1 (la contrainte qu'aucune ne respecte : la n°0).
SELECT idAnnonce FROM annonce
INNER JOIN requiert ON requiert.idAnnonce = annonce.idAnnonce
WHERE idContrainte IN($listeContraintes)
GROUP BY annonce.idAnnonce
HAVING COUNT(idRequirement) = 1;
Le but étant de ne prendre que les annonces dont le nombre de contraintes non dans la liste est 1 (la contrainte qu'aucune ne respecte : la n°0).
jordane45
Messages postés
38301
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 novembre 2024
4 704
17 janv. 2015 à 02:09
17 janv. 2015 à 02:09
Bonjour,
Sans avoir de DUMP de tes tables, pas facile de répondre exactement...
mais quelque chose de ce genre devrait pouvoir correspondre à tes besoins..
Sans avoir de DUMP de tes tables, pas facile de répondre exactement...
mais quelque chose de ce genre devrait pouvoir correspondre à tes besoins..
SELECT A.idAnnonce FROM annonce A, requiert R WHERE A.idAnnonce = R.idAnnonce AND R.idContrainte IN($listeContraintes) GROUP BY A.idAnnonce
15 janv. 2015 à 16:46
15 janv. 2015 à 17:03
15 janv. 2015 à 17:06
15 janv. 2015 à 17:22
la table d'annonce stock l'annonce mais la contrainte stock l'id de l'annonce et les contrainte sélectionner par exemple tu auras 3 contrainte de possible au total et bien au départ dans la base de donnée sont mise a NULL et a la création si il a sélectionner des contrainte tu les passe a 1
ensuite avec ça tu pourras faire afficher l'annonce et la liste des contraire avec une requête
15 janv. 2015 à 17:25