Associer plusieurs SELECT dans une table SQL

Résolu
gexevo Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -  
gexevo Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -
Salut,

Ça fait trois jours que j'essaie différente combinaison SQL pour mener à bien ma requête mais là j'ai vraiment besoin de poster.

Je vous explique, la requête repose sur un site d'annonces.

Dans le FORM j'ai plusieurs conditions :

* Mot clef (<input type="text">)
* La région (<select>)
* Année Mini (<select>)
* Année Max (<select>)
* Prix Mini (<select>)
* Prix Max (<select>)
et le SUBMIT.

Comment associer les résultats et me ressortir ceux qui ont des cohérences tout en sachant qu'un champ du FORM peut rester vide.

Les résultats sont dans une seule table.

Merci de partager vos idées, je compte sur vous.

A+

3 réponses

  1. moderno31 Messages postés 900 Statut Membre 92
     
    Hello
    Mais ta requête est ou ?
    La structure de la seule table c'est quoi ?
    Tu es sous quel SGBD ?
    0
  2. blux Messages postés 5036 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    c'est à toi de générer ton SQL par programmation, il n'y a pas d'autre moyen...
    0
  3. gexevo Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   8
     
    C'est bon j'ai enfin trouvé.
    Voici le code pour ceux qui pourrait être intéressé.

    $requete2 = "SELECT * FROM annonces WHERE 1=1 ";
    if (empty($mot_cle) and empty($region) and empty($annee_mini) and empty($annee_maxi) and empty($prix_mini) and empty($prix_maxi)) {
      $requete2 = "SELECT * FROM annonces";}
    else {
      if (!empty($mot_cle)) {
        $requete2 .= " AND titre LIKE '%$mot_cle%'";}
      if (!empty($region)) {
        $requete2 .= " AND region='$region'";}
      if (!empty($annee_mini)) {
        $requete2 .= " AND annee >='$annee_mini'";}
      if (!empty($annee_maxi)) {
        $requete2 .= " AND annee <='$annee_maxi'";}
      if (!empty($prix_mini)) {
        $requete2 .= " AND prix >='$prix_mini'";}
      if (!empty($prix_maxi)) {
        $requete2 .= " AND prix <='$prix_maxi'";}
       
       $requete2 .= " ORDER BY id DESC LIMIT $Ndeb,$Nmax";  
      }  
    0