Requete mysql sur tables champs identiques [Résolu]

Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- - Dernière réponse : cs_AlexN
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
- 9 mai 2006 à 17:08
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!!!
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
3
Merci
Pour lever l'ambiguité de ta requete fais preceder les noms des champs par les nom de tableWHERE Table1.ChampIdentique ... AND WHERE Table2.ChampIdentique ..

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_AlexN
Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Dernière intervention
23 septembre 2014
0
Merci
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
Commenter la réponse de cs_ov3rdoze
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
0
Merci
le second WHERE est de trop
Commenter la réponse de cs_AlexN

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.