SELECT sur plusieurs tables + affichage selon la table

Eléphant du PHP | 190 Messages

16 janv. 2009, 13:19

Bonjour,

j'ai un SELECT sur plusieurs tables qui possèdent chacune un champ date.

Code : Tout sélectionner

(SELECT id,date FROM table1) UNION (SELECT id,date FROM table2) ORDER BY date ASC
Je les affiche ensuite sur ma page de news pour un resulat du genre:

- xx/xx/2009 un nouvel élément de type table1 a été créé.
- xx/xx/2008 un nouvel élément de type table2 a été créé.
etc...

La ou j'ai un probleme c'est justement pour tester la provenance des données affichées. Donc de quelle table elles proviennent.

Comment, dans ma boucle d'affichage, puis-je tester le nom de la table d'ou la donnée est extraite ?

merci a vous.

Eléphant du PHP | 254 Messages

16 janv. 2009, 15:55

Salut,

Essaye ceci

(SELECT id,date,"table1" FROM table1) UNION (SELECT id,date,"table2" FROM table2) ORDER BY date ASC

Eléphant du PHP | 190 Messages

16 janv. 2009, 21:13

Ok mais mon problème se situe un peu plus loin. Je vais développer un peu pour que vous compreniez mieux.
$sql='(SELECT id,date FROM table1) UNION (SELECT id,date FROM table2) ORDER BY date ASC';
$resultat = mysql_query($sql) or die ('Impossible d\'effectuer la requete "'.$sql.'": '.mysql_error());
while($row=mysql_fetch_assoc($resultat))
     {
     if (les données proviennent de la table 1)
           {
           echo date($row['date']).' - Un nouvel élément de type table1 à été créé<br />';
           }
     if (les données proviennent de la table 2)
           {
           echo date($row['date']).' - Un nouvel élément de type table2 à été créé<br />';
           }
     }
J'ai simplifié biensur mais le principe est la.

Comment savoir si les données en cours proviennent de la table1 ou de la table2 ?

J'ai bien compris votre réponse mais comment utiliser la requête que vous m'avez indiqué pour obtenir ce que je souhaite ?

Merci.

Eléphant du PHP | 254 Messages

16 janv. 2009, 22:42

ok autant pour moi je précise

la requete suivante

Code : Tout sélectionner

(SELECT id,date,"table1" as tab FROM table1) UNION (SELECT id,date,"table2" as tab FROM table2) ORDER BY date ASC
Va te permettre de faire le test que tu veux, tu n'auras qu'a tester la valeur de $row['tab']

Essaye la dans mysql

Eléphant du PHP | 422 Messages

17 janv. 2009, 11:18

Avec des simple quotes autour de table1 et table2, ça ira encore mieux.

Eléphant du PHP | 190 Messages

17 janv. 2009, 15:10

Ca marche nickel.

Je peux maintenant afficher tout mes évènements en une seule requête, merci beaucoup !