Requetes imbriquées

Requetes imbriquées - SQL/NoSQL - Programmation

Marsh Posté le 01-08-2006 à 10:34:18    

bonjour à tous ;
 
voila mon probleme je fais un moteur de recherche interne a mon site et lorsque j effectue une recherche multi-criteres je dois imbriqués 2 requetes SQL ..
 
Je n arrive pas a réaliser cela ( surement du fait que je suis nul en SQL  :D )
 
Donc j aurai besoin d aide pour imbriquer les 2 requetes suivantes :  :)  
 
Requete 1 :

Code :
  1. $query_titre = "SELECT  * FROM carnet_voyage
  2. WHERE titre_carnet_voyage LIKE \"%$Mot%\"
  3. OR titre_carnet_voyage LIKE \"%$Mot%\" ORDER by id_carnet_voyage ASC";


 
Requete 2 :

Code :
  1. $query_date_voyage = "SELECT  * FROM carnet_voyage
  2. WHERE date_voyage LIKE \"%$date_v%\"
  3. OR date_voyage LIKE \"%$date_v%\" ORDER by id_carnet_voyage ASC";


 
 
Merci d'avance
 

Reply

Marsh Posté le 01-08-2006 à 10:34:18   

Reply

Marsh Posté le 01-08-2006 à 10:38:40    

ce que tu veux faire est pas une imbrication mais bien une requete simple avec plusieurs criteres
ton where doit ressembler a ca;

Code :
  1. where (titre_carnet_voyage LIKE \"%$Mot%\"OR titre_carnet_voyage LIKE \"%$Mot%\" ) and (date_voyage LIKE \"%$date_v%\"OR date_voyage LIKE \"%$date_v%\" ) ORDER by id_carnet_voyage ASC";


mais a mon humble avis lis les 10 premieres lignes d un tuto SQL

Message cité 1 fois
Message édité par betsamee le 01-08-2006 à 10:39:10
Reply

Marsh Posté le 01-08-2006 à 10:39:22    

je ne vois pas pourquoi , ni comment tu veux les imbriquer
qu'est ce que tu cherche comme résultat ?

Reply

Marsh Posté le 01-08-2006 à 11:02:28    

betsamee a écrit :

ce que tu veux faire est pas une imbrication mais bien une requete simple avec plusieurs criteres
ton where doit ressembler a ca;

Code :
  1. where (titre_carnet_voyage LIKE \"%$Mot%\"OR titre_carnet_voyage LIKE \"%$Mot%\" ) and (date_voyage LIKE \"%$date_v%\"OR date_voyage LIKE \"%$date_v%\" ) ORDER by id_carnet_voyage ASC";


mais a mon humble avis lis les 10 premieres lignes d un tuto SQL


 
ah oui je pense que c'est cela je vais aller tester de suite , mais désolé peut etre que j utilise les mauvais termes en SQL car je suis une vrai Bille dans cas dsl  
 
Merc

Reply

Marsh Posté le 01-08-2006 à 11:03:43    

flo850 a écrit :

je ne vois pas pourquoi , ni comment tu veux les imbriquer
qu'est ce que tu cherche comme résultat ?


 
je veux afficher les resultats que mon moteur de recherche interne et trouver par rapport aux champs saisis par l utilisateur ( dans se cas par -> titre_carnet_voyage et date_voyage)

Reply

Marsh Posté le 01-08-2006 à 11:05:48    

je repond a ta question 4 posts plus haut

Reply

Marsh Posté le 01-08-2006 à 11:08:11    

betsamee , je repondais a la question de flo850:d et merci pour ton aide
impecc ça marche Merciiiiiiiiiiiiiii :bounce:

Message cité 1 fois
Message édité par mitch46000 le 01-08-2006 à 11:09:55
Reply

Marsh Posté le 01-08-2006 à 11:13:38    

mitch46000 a écrit :

betsamee , je repondais a la question de flo850:d et merci pour ton aide
impecc ça marche Merciiiiiiiiiiiiiii :bounce:


:jap:
 
honnetement tu devrais te former un minimum au sql parcequ la c'est la base de la base

Reply

Marsh Posté le 01-08-2006 à 11:16:46    

oui je compte le faire mais je chercher aux mauvaises endroit aussi donc voila....

Reply

Marsh Posté le 01-08-2006 à 15:47:18    

re coucou c moi !!! dit je n arrive pas a concaténé mes 2 requetes quelqu un pourrait il me REaidé car le bloque complet voila mon code :
 

Code :
  1. $titre_carnet_voyage = $_POST['titre_carnet_voyage'];//valeur du titre carnet de voyage
  2. $commentaire_carnet_voyage = $_POST['commentaire_carnet_voyage'];
  3. $rechercher='';
  4. if ($_POST['Rechercher_carnet_voyage']=="Rechercher" )
  5. {
  6. if ($titre_carnet_voyage == "" ){
  7. // cas ou mon champs titre_carnet est vide    
  8. }
  9. else{
  10. $rechercher. = "titre_carnet_voyage LIKE \"%$titre_carnet_voyage%\" ";
  11. }
  12. if ($commentaire_carnet_voyage == "" ){
  13. // cas ou mon champs titre_carnet est vide  
  14. }
  15. else{
  16. $rechercher.= "commentaire_carnet_voyage LIKE \"%$commentaire_carnet_voyage%\" ";
  17. }
  18. $rechercher. =  " SELECT * FROM carnet_voyage
  19. WHERE  ($rechercher)ORDER by id_carnet_voyage ASC";
  20. }


 
voila mon code (surement faux car j ai des erreurs)
 
En gros j au petit moteur de recherche dans ma base et je veus selon les cas ou je saisi titre et commentaire ou pas m affiche les resultats
 
Pour mieux comprendre :
 
si rien saisie --------------------------> message d erreur (cela est deja gérer)
si titre "et" commentaire sont saisies ---> affichage du resultats selon les valeurs rentrés par l utilisateur  
si QUE titre est saisie -----------> affichage du resultat selon la valeur de titre
si QUE commentaire est saisie ---> affichage du resultat selon la valeur de commentaire  

Reply

Marsh Posté le 01-08-2006 à 15:47:18   

Reply

Marsh Posté le 01-08-2006 à 15:51:38    

remplace  
$rechercher. = " condition ";  
par  
$rechercher. = " AND condition ";  
 
et
 
$rechercher =  " SELECT * FROM carnet_voyage WHERE  ($rechercher)ORDER by id_carnet_voyage ASC";  
par  
$rechercher =  " SELECT * FROM carnet_voyage WHERE  1 ($rechercher)ORDER by id_carnet_voyage ASC";  
 
au passage tu as mis un . en trop quand tu  contruit ta requete a la fin
 
une habitude a prendre quand la rquete ne marche pas est de faire afficher la requete construite

Message cité 1 fois
Message édité par flo850 le 01-08-2006 à 15:52:00
Reply

Marsh Posté le 01-08-2006 à 16:15:32    

flo850 a écrit :

remplace  
$rechercher. = " condition ";  
par  
$rechercher. = " AND condition ";  
 
et
 
$rechercher =  " SELECT * FROM carnet_voyage WHERE  ($rechercher)ORDER by id_carnet_voyage ASC";  
par  
$rechercher =  " SELECT * FROM carnet_voyage WHERE  1 ($rechercher)ORDER by id_carnet_voyage ASC";  
 
au passage tu as mis un . en trop quand tu  contruit ta requete a la fin
 
une habitude a prendre quand la rquete ne marche pas est de faire afficher la requete construite


 
ok je vais tester tout çà mais le "1" dans mon SELECT il sert a quoi :??:  

Reply

Marsh Posté le 01-08-2006 à 16:20:05    

ca evite de se poser la question : "est ce que c'est la premier condition ou pas? "  
si c'est la premeire alors je fais $recherche .=" condition" , sinon, je fais $recherche?="  AND condition"  

Reply

Marsh Posté le 01-08-2006 à 16:27:23    

Merci bien je pense qu a l avenir cela va me servir :d MERCI BEAUCOUP

Reply

Marsh Posté le 01-08-2006 à 17:29:10    

flo850 a écrit :

ca evite de se poser la question : "est ce que c'est la premier condition ou pas? "  
si c'est la premeire alors je fais $recherche .=" condition" , sinon, je fais $recherche?="  AND condition"


Plutôt que simplement un 1 (MySQL ?), une vraie expression booléenne 1=1 serait plus correcte et plus portable.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed