IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Recherche sur plusieurs tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Par défaut Recherche sur plusieurs tables
    Bonjour à tous,

    J'aimerais faire une recherche sur plusieurs tables, dans des champs communs.
    J'ai essayé d'utiliser la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1, table2, table3, table4, table5 WHERE table1.nom LIKE \"%$q%\" OR table2.titre OR table3.titre OR table4.titre OR table5.titre LIKE \"%$q%\" OR table2.contenu OR table3.contenu OR table4.contenu OR table5.contenu LIKE \"%$q%\"
    Mais elle ne fonctionne pas.
    J'aimerais également utiliser des ET/OR : "table2.titre OR table3.titre OR table4.titre", comment éviter ici le "ou" ?
    Car j'ai l'impréssion que ça doit sélectionner qu'une table, alors que j'aimerais que ça sélectionne tous les résultats de toutes les tables.

    Merci d'avance.

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut
    Je suis pas un pro du SQL donc il se peut que ma réponse ne soit pas exacte mais bon on sait jamais cela va pt t'éclairer parreil.

    Premièrement lorsqu'on fait un jointure entre deux ou plusieurs table en général il convient d'avoir un condition pour lier les tables. Souvent on utilise une clé primaire en comparaison avec une clé secondaire.

    Une jointude c'est un produit cartésien.

    Donc par exemple.

    Table1
    ID Nom
    1 Test
    2 Allo

    Table2
    ID Nom
    1 YO
    2 Hu

    SELECT * FROM table1, table2 va donner

    ID NOM ID NOM
    1 Test 1 Yo
    1 Test 2 Hu
    2 Test 1 Yo
    2 Test 2 Hu

    Ou quelque chose comme cela comme je dis je suis pas un pro. Donc si tu fais une comparaison genre Select Table1.ID, Table1.nom From Table1, Table 2 where Table1.ID = 1 cela va te retourner deux lignes ce qui n'est pas le résultat voulu puisque tu n'a qu'un ID 1.

    Voic ta requete

    SELECT * FROM table1, table2, table3, table4, table5 WHERE table1.nom LIKE \"%$q%\" OR table2.titre OR table3.titre OR table4.titre OR table5.titre LIKE \"%$q%\" OR table2.contenu OR table3.contenu OR table4.contenu OR table5.contenu LIKE \"%$q%\"

    Tu a une jointure entre 5 tables et tout ce que tu fais c'est comparer leur nom, titre ou contenu avec des chaines. Je peux me tromper mais ton résultat sera erroné.

    Ton table1.nom LIKE va se retourver plusieur fois surtout que tu fais des OR donc aussitot que ton table1.nom va être vrai cela va te retourné un enregistrement pour chaque ligne de table2, table3, table4 et table5 associer lors du produit cartésien (cad un tapon de ligne avec les même table1.nom si les tables sont grosses).

    Tu devrais plutot utiliser les Unions et faire plusieurs SELECT

    Pour ce qui est des OR tu dois répéter le like à chaque fois je pense dans le style table2.titre LIKE \"%$q%\" OR table3.titre LIKE \"%$q%\" OR table4.titre LIKE \"%$q%\" OR table5.titre LIKE \"%$q%\" etc ...

    Je ne suis pas certain de ce que tu tente avec cette requête mais bon lol

  3. #3
    Membre confirmé Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Par défaut
    Oui c'est ça en fait, je vais voir ce que je peux trouver.

Discussions similaires

  1. sql recherche sur plusieurs table / commande IN
    Par Tonio13006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/05/2008, 14h29
  2. Forger une requete de recherche sur plusieurs tables.
    Par robocop333 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/04/2008, 14h44
  3. Recherche sur plusieurs tables en même temps
    Par Zouzou1er dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/10/2007, 09h40
  4. [MySQL] moteur de recherche sur plusieurs tables
    Par harlock59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/04/2007, 15h23
  5. [MySQL] Recherche sur plusieurs tables
    Par hubidev dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/03/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo