Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête select avec des jointures

    26 juillet 2011 à 21:04:28

    Bonsoir

    j'ai la requête ci dessous qui fait une recherche Multi-critère selon le nom, le diplôme, la profession, l’école,la ville et l'entreprise. On peut spécifier juste un seul critère de recherche .

    Je désir afficher les noms des membres recherchés, mais cette requête affiche le nom d'un membre que si l’identifiant de celui ci se trouve aussi dans la table obtenu et travailler ,même si on précise que le nom comme critère de recherche.
    Comment faire pour qu'elle me retourne tous le résultat voulu?

    select distinct A.* from membres A
    left outer join membres N on A.id=N.id
    left outer join obtenu B on A.id=B.id_membre
    left outer join ecole B1 on B.id_ecole=B1.id
    left outer join obtenu D on A.id=D.id_membre
    left outer join diplome D1 on D.id_diplome=D1.id
    left outer join travailler C on A.id=C.id_membre
    left outer join profession F on C.id_profession=F.id
    left outer join travailler C1 on A.id=C1.id_membre
    left outer join entreprise F1 on C1.id_entreprise=F1.id
    left outer join ville E on A.id_ville=E.id
    where  (N.prenom like '%richard%' or N.nom like '%richard%' or N.nomp like '%richard%'or N.prenomn like '%richard%')
    and E.nomv like '%' and D1.nomd like '%'  and B1.nome like '%'
    and F.nompr like '%'  and F1.noment like '%'
    

    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2011 à 21:42:30

      "machin like '%'" sous-entend que machin est NOT NULL, donc tous tes LEFT JOIN sont transformés en simple JOIN, ce qui explique tes résultats.

      La solution est de virer les conditions inutiles du WHERE si l'utilisateur ne les remplit pas.
      • Partager sur Facebook
      • Partager sur Twitter
        26 juillet 2011 à 22:07:33

        Ah d'accord .Il y'a pas un caractère qu'on peu remplacer par % et qui signifie n'importe quel valeur?
        • Partager sur Facebook
        • Partager sur Twitter
          26 juillet 2011 à 22:18:15

          C'est pas si compliqué d'assembler une liste de conditions dans un WHERE... implode( ' AND ', $conditions ) et hop.
          • Partager sur Facebook
          • Partager sur Twitter
            26 juillet 2011 à 23:54:59

            j'ai pas compri :( .Tu peux me donner exemple s'il te plais?
            • Partager sur Facebook
            • Partager sur Twitter

            Requête select avec des jointures

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown