Requete mysql sur tables champs identiques [Résolu]

Signaler
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
-
Bonjour,

j'ai un formulaire par lequel l'user selectionne ce qu'il veut rechercher dans ma base.
Il a également le choix de rechercher sur une ou plusieurs tables. Dans mes tables, les champs ont le meme nom, je voudrais si possible que ca reste comme ca.
C'est là qu'est mon problème, si je coche la recherche sur une seule table, c'est ok, par contre, si je recherche sur plusieurs tables, ca me dit : Column 'NOM DU CHAMP' in where clause is ambiguous
Est ce qu'il y a une feinte pour contrer ca...???

Voici mon code :

//Mot clé
$flag='';
$where='';


if(!EMPTY($_POST['mot_cle']))
{
$where=' WHERE description OR cause_probable OR proposition_amelioration LIKE \''.$_POST['mot_cle'].'\' ';
$flag='1';
}


//Agence concernée
if(!EMPTY($_POST['agence_concernee']))
{
if($flag=='1') $where.=' AND agence_concernee LIKE \''.$_POST['agence_concernee'].' \' ';
else
$where.=' WHERE agence_concernee LIKE \''.$_POST['agence_concernee'].' \' ';
$flag='1';
}


//Processus concerné
if(!EMPTY($_POST['processus_concerne']))
{
if($flag=='1') $where.=' AND processus_concerne LIKE \''.$_POST['processus_concerne'].' \' ';
else
$where.=' WHERE processus_concerne LIKE \''.$_POST['processus_concerne'].' \' ';
$flag='1';
}


//Responsable
if(!EMPTY($_POST['resp']))
{
if($flag=='1') $where.=' AND resp LIKE \''.$_POST['resp'].' \' ';
else
$where.=' WHERE resp LIKE \''.$_POST['resp'].' \' ';
$flag='1';
}


//Etat des actions
if(!EMPTY($_POST['etat_action']))
{
if($flag=='1') $where.=' AND etat_action LIKE \''.$_POST['etat_action'].' \' ';
else
$where.=' WHERE etat_action LIKE \''.$_POST['etat_action'].' \' ';
$flag='1';
}


//Numéro
if(!EMPTY($_POST['numero']))
{
if($flag=='1') $where.=' AND numero LIKE \''.$_POST['numero'].' \' ';
else
$where.=' WHERE numero LIKE \''.$_POST['numero'].' \' ';
$flag='1';
}

Merci d'avance pour votre aide!!!

3 réponses

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Pour lever l'ambiguité de ta requete fais preceder les noms des champs par les nom de tableWHERE Table1.ChampIdentique ... AND WHERE Table2.ChampIdentique ..
Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
23 septembre 2014

Il faut que tu renomme tes tables :
Par exemple si t'as une table 'user' avec un champ nom et une table 'agence' avec un champ nom egalement, et que tu fais une recherche sur ces 2 critères :
SELECT ... FROM user u, agence a WHERE u.nom=... AND a.nom=...;

...Si j'ai bien compris ton probleme
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
le second WHERE est de trop