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

PHP & Base de données Discussion :

syntaxe inner join [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut syntaxe inner join
    bonjour

    j'avais un inner join qui fonctionnait en local, mais une fois en ligne j'ai un problème( version mysql différente).
    je le fais sur plusieurs table avec la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //requete avec tri et recherche
    $sql= "SELECT  * FROM produits INNER JOIN fournisseur,constructeur  produits.importateur=fournisseur.idfourni 
     AND produits.constructeur=constructeur.idconstr ".$motrecherche.$ordre2;
    mais j'ai l'erreur Not unique table/alias: 'produits' qui apparait.
    comment peut on faire pour lier 2 champs différents d'une table vers 2 autres tables.


    ci dessous code avec le fonctions recherche et tri si besoin
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
     
     
     
    //variable de recherche et d'ordre
     
     
    $ordre2= ' ORDER BY `'  . mysql_real_escape_string($ordre) . '` ';
    $motrecherche= '';
    $searchpar=$_REQUEST['par'];
     
     
     
    $mot=$_REQUEST['motclef'];
    $mot=mysql_real_escape_string($mot);
    //verification que la recherche ne soit pas vide
    if (isset($mot)){
    $motrecherche= 'WHERE `' . mysql_real_escape_string($searchpar) . '` LIKE "%' .$mot . '%"';
    }
     
    // verification si l'option rechercher partout est validé
    if($searchpar=='partout'){
    	$motrecherche='WHERE designation LIKE "%' . mysql_real_escape_string($mot) . '%" 
    	or appellation LIKE "%' . mysql_real_escape_string($mot) . '%"
    	or constr LIKE "%' . mysql_real_escape_string($mot) . '%"
    	or fournisseur LIKE "%' . mysql_real_escape_string($mot) . '%"';
    }
     
    //requete avec tri et recherche
    $sql= "SELECT  * FROM produits INNER JOIN fournisseur,constructeur  produits.importateur=fournisseur.idfourni 
     AND produits.constructeur=constructeur.idconstr ".$motrecherche.$ordre2;

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  * 
    FROM produits 
    INNER JOIN fournisseur ON (produits.importateur=fournisseur.idfourni)
    INNER JOIN constructeur ON  (produits.constructeur=constructeur.idconstr)
    WHERE ".$motrecherche.$ordre2
    De plus, dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motrecherche= 'WHERE `' . mysql_real_escape_string($searchpar) . '` LIKE "%' .$mot . '%"';
    et idem pour $ordre2,
    il faut que searchpar contient table.champ et pas seulement champ, sinon tu pourrais avoir des soucis de noms de tables identiques.
    De mêmes, le * ne veut rien dire, prend produits.* et/ou fournisseur.* , etc
    Enfin tu peux donner des alias au noms de tables, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     FROM produits p
    INNER JOIN fournisseur f ON (p.importateur=f.idfourni)
    INNER JOIN constructeur c ON  (p.constructeur=c.idconstr)
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  3. #3
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    Ok
    Merci pour le dépannage et les infos. j'ai fait attention que les champs des tables n'est pas le même nom car j'ai eu le souci sur la recherche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.5] Syntaxe INNER JOIN sur même table
    Par salent9 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2014, 08h49
  2. Syntax inner join
    Par _ldb_ dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/12/2011, 19h07
  3. problème Syntax INNER JOIN sqldatasource
    Par quake3 dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 12/04/2011, 13h48
  4. [ADO ACCESS] Problème de syntaxe INNER JOIN
    Par couiss dans le forum Bases de données
    Réponses: 6
    Dernier message: 03/04/2008, 09h37
  5. Réponses: 7
    Dernier message: 13/12/2007, 13h32

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