Merci pour ton aide!!!![]()
Bonjour,
Si tu as 1 version 4.1 ou >, ça devrait marcher, et ne te renvoyer que les resto. qui offrent ts les services de la table service
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
16
17
18 SELECT id_resto FROM resto WHERE id_resto NOT IN ( SELECT x.id_resto FROM ( SELECT resto.id_resto, service.id_service FROM resto CROSS JOIN service ) x LEFT OUTER JOIN service_resto ON x.id_resto = service_resto.id_resto AND x.id_service = service_resto.id_service WHERE service_resto.id_service IS NULL ) ;
Envoyé par TheLeadingEdge
![]()
Si tu peux m'expliquer un petit peu plus ta requete ca serait vraiment gentil car là je ne comprend rien!!!
Ca correspond à quoi "x"?.....![]()
Tu crées 1 ensemble de ts les resto et ts les services. (produit cartésien des 2 ensembles resto et service en mathématiques)
Cet ensemble doit être identifié, d'ou le x (pour x-join).
Mais ça aurait pu être gabuzomeu...Tu fais la jointure avec resto service pour ''repérer'' les restos auxquels il manque 1 ou plusieurs services. (ceux que tu veux éliminer de ta liste finale donc)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ( SELECT resto.id_resto, service.id_service FROM resto CROSS JOIN service ) x
Enfin tu sélectionnes dans ta table resto ceux qui ne font pas partie de la liste des ''exclus''
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT x.id_resto FROM (...) x LEFT OUTER JOIN service_resto ON x.id_resto = service_resto.id_resto AND x.id_service = service_resto.id_service WHERE service_resto.id_service IS NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT id_resto FROM resto WHERE id_resto NOT IN ...
Merci pour ton eclaircissement. Mais est ce que c'est possible de me montrer comment adapter ta requette avec mon formulaire.
Je te rapel ce qu'il ya dans mon formulaire:
une liste déroulante pour le choix de catégorie (choix obligatoire), une autre liste pour le genre (choix non obligatoire), des cases à cocher pour le choix des services et des cases à cocher pour le choix des options.
Au fait je ne sais pas comment faire ma requete suivant ce qu'il a été coché et choisi dans mes 2 listes.
Il ya eu une proposition de la par de "cybher " au dessus. Mais je ne sais pas si je peux l'adapter!!!![]()
Merci ppour ton aide.
re,
Tu peux mixer les 2 propositions en rajoutant 1 restriction qui corresponde aux cases cochées.
Tu n'auras qu'1 seule requête à écrire, et qque soit le nombre de services que tt rajouteras ds ta table elle sera tjours valable.
requete = "début de la rq ...
(
SELECT resto.id_resto,
service.id_service
FROM resto
CROSS JOIN service
WHERE id.service IN ("
+ "'nomduservice1'" si case à cocher est cochée [+ "',nomduservice2'" si case à cocher est cochée] et c...
")
) x fin de la rq..."
en rouge la partie que j'ai ajouté
Désolée de vous déranger encore mais je m'en sort pas!!!!
G essayé de créer ma requete dynamyquement et voir sur un exemple si ca marche :
Voici ma requete de base :
[code]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $rep_cat=mysql_query("SELECT id_cat FROM categorie WHERE nom_cat='$_POST[categorie]'"); //je déclare une var rep_rech qui va me sert de requete à lakel je vais rajouter mes autre conditions $rep_rech=$rep_cat;
.......
//Avant je fait des test pour voir si le genre à été selectionné comme critère de recherche puis je le rajoute à ma requete initiale
$rep_rech = $rep_rech + and cp_resto='$_POSTcp_resto est un champ de ma table resto!! je ne vois pas comment l'intégrer à ma requette car ca en marche pas!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part '+ and id_genre='$genre_id[id_genre]';
A L'AIDEEEEEEEEEE!!!
Avant voilà ce que j'avais :
[code]
$rep_rech=mysql_query("SELECT * FROM resto WHERE id_cat='$cat[id_cat]' AND cp_resto='$_POSTMais le prob avec ca c'est que plus y a de conditions plus ca va etre long mais ca marchait!
Code : Sélectionner tout - Visualiser dans une fenêtre à part ' AND id_genre='$genre_id[id_genre]'");
desolé pour la mise en forme du code je lé mal fait!!! Si vous ne comprenez pas je reexplique!![]()
Salut
Je n'arrive toujours pas à résoudre mon probleme!!!![]()
Salut,
Tu aurais plus de réponses sur le forum PHP qui est fait pour ça...
Ici on s'occupe surtout des problèmes purement MySQL.
mais c du mysql mon prob, ya les deus dedans, mon prob, c que je n'arrive pas à bien formular ma requete!!
En-dehors de ton script PHP, tu arrives à faire des requêtes SQL de recherche ? Elles marchent ?
=> Donc le problème ne vient pas de MySQL mais de la construction de ton script PHP.
Par ailleurs vu le fouillis que peuvent être tes messages précédents (balises code qui se baladent, langage SMS, ponctuation horripilante), ça ne m'étonne pas que les réponses ne fusent pas.
Désolée pour le langage sms, mais pour les balises code ce n'est pas de ma faute si dans mon script je dispose d'une variable qui s'appelle 'code'!!! Je n'ai pas prévisualisé mon message pour voir à quoi ca ressemble!! Mais désolée quand même!![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager