Requete sur 2 tables en même temps

Mammouth du PHP | 620 Messages

14 janv. 2011, 11:10

Bonjour,
j'ai 2 tables dans ma base qui contiennent des infos qui ont des infos différentes.
je voudrai afficher sur la meme page 5 infos de la table1 et 3 infos de la table2.
Actuellement je fait 2 requetes qui vont chacunes chercher les infos dans chaque table.
Est il possible de n'ecrire qu'une seule requete pour les 2 tables du genre : select * table1 et table2 orderby table1.nom asc et orderby.table2.desc ?
la requete est fausse car je ne sait pas l'ecrire.

Eléphant du PHP | 99 Messages

14 janv. 2011, 11:21

Je pense qu'il faut utiliser UNION, je n'ai pas tester le code, pas certains qu'il soit juste, mais quelque chose comme ceci :
SELECT * FROM table1 ORDER BY table1.nom ASC LIMIT 5
UNION
SELECT * FROM table2 ORDER BY table2 DESC LIMIT 3

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

14 janv. 2011, 13:11

attention pense a mettre le même nombre de colonne sélectionnée pour les deux tables ;)

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

Mammouth du PHP | 620 Messages

14 janv. 2011, 16:44

re,
je viens d'essayé avec union et sa fonctionne pas.
j'ai essayé de commencé simplement mais rien ne s'afffiche. (les table sont differentes et n'ont pas les même infos et donc pas le meme nombre de champs)
$requete = mysql_query("SELECT * FROM IWinfos LIMIT 5 UNION SELECT * FROM IWsports LIMIT 3"); 
while( $result = mysql_fetch_array( $requete ) )
{
......
}


ViPHP
xTG
ViPHP | 7331 Messages

14 janv. 2011, 16:47

Il faut le même nombre de champs, et les mêmes noms de champs (enfin il me semble, j'ai bossé que sous Access dernièrement donc c'est peut être spécifique à la bête), ou tout du moins du même type.
Donc un select * n'arrangera aucunement ton affaire.

Quel est la composition de tes tables qu'on te guide un minimum ?

ViPHP
ViPHP | 2291 Messages

14 janv. 2011, 17:02

Salut,

Pour info
Dans ton cas je pense que tu va devoir oublier cette piste.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.