Requete mysql sur tables champs identiques [Résolu]

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

Merci cs_AlexN 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_AlexN
cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 9 mai 2006 à 17:06
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
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 9 mai 2006 à 17:08
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.