Requête Mysql SELECT * From table1, table2, table3

Mammouth du PHP | 702 Messages

11 mai 2012, 11:17

en fait, pour des raisons d'usages, je dois insérer des données dans 3 tables différentes en fonction de mes desiderata. Le soucis c'est que je ne peux pas les mettre tous dans la même table. Ce sont des enregistrements qui sont identifiés par un numéro de dossier. La table contient 5 colones et les 3 tables sont identiques si ce n'est le nom de table qui change.

pour des raisons pratiques je dois afficher pour chaque utilisateur les enregistrements des tables. donc du coup, j'ai essayé de faire cette requête avec la variable de session login. Mais pour l'heure j'ai eu ces messages d'erreurs.

je ne sais pas encore comment résoudre le problème.


car j'essaye de faire un SELECT * FROM TABLE, TABLE, TABLE mais ça bug.

d'avance merci.

voici le message d'erreur:

881Column 'n_doss' in where clause is ambiguousSELECT * FROM liasse_a, liasse_b, liasse_c where n_doss='110015666223' AND date_action < now()

et ma requête:
$sql = "SELECT * FROM liasse_a, liasse_b, liasse_c WHERE action='".mysql_real_escape_string($_SESSION['login'])."' AND  date_action < now()";

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 mai 2012, 11:27

3 tables identique la c'est une erreur de modélisation rien d'autre :mrgreen:

Après ta requête est forcément foireuse vue que les champs ont le même nom, comment peux tu savoir qui vient d'où ?

Il faut préfixer le champ par le nom de table. Exemple tbl1.nomDuChamp

Tu aura le même problème dans le choix des champs !
@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 702 Messages

11 mai 2012, 11:35

mais comment je peux procéder alors? d'avance merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 mai 2012, 11:40

Ben je sais pas moi je connais pas ton système hein ;)

Mais généralement c'est un champ en plus (référence à une autre table si peux être amené à évoluer).

Par exemple dans une entreprise tu va pas faire une table patron, une table chef d'équipe, une table secrétaire, une table grouillots etc etc. Tu va faire une seule table avec un champ fonction (qui sera une jointure sur une table fonction avec les dénominations ;) ).

@+
Il en faut peu pour être heureux ......

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 mai 2012, 11:48

3 tables identique la c'est une erreur de modélisation rien d'autre :mrgreen:
Il faut commencer par modéliser ta base correctement.
Quelles sont les données à traiter ?
Que cherches-tu à faire ?

Mammouth du PHP | 702 Messages

11 mai 2012, 11:57

en fait j'ai 3 tables strictement identique, je souhaites afficher toutes les actions des utilisateurs sachant qu'elles ont été enregistrées et qu'on peut les identifier grâce à la variable session.

mais d'après ce qu'on m'as dit 3 tables ça n'est pas bon, mais je vois pas comment dans une table je peux avoir 2 enregistrements identiques c'est pour cela, et comme ils sont nécessaires j'ai besoin de les séparer d'ou plusieurs tables identiques.

ViPHP
ViPHP | 2577 Messages

11 mai 2012, 13:27

Il est possible d'ajouter un code comme par exemple code_table qui vaut 1, 2 ou 3.

Mammouth du PHP | 702 Messages

11 mai 2012, 16:26

la ruse est finaude, j'y avais pas pensé, Merci :)