Affichage des données d'une base

ViPHP
ViPHP | 2291 Messages

28 nov. 2006, 12:12

Bonjour,

Me revoilà :oops:
Mais pour un tout petit soucisje veux afficher les données d'une TABLE trie par id par exemple.
Pour cela je tape ceci :
SELECT * FROM annonce ORDER BY id_annonce 
Nickel sa fonctionne.

Mais j'ai trois TABLES et j'ai besoins d'information qui se trouve dans une autre TABLE de la même base :wink:
alors je tape ceci :
SELECT * FROM annonce,file,directory ORDER BY id_annonce 
ou
SELECT * FROM annonce,file,directory ORDER BY id_annonce.id_annonce
Et là ok il m'affiche les données que je cherche mais plusieurs fois ?
a la place de deux lignes je me retrouve avec 2x14 lignes ?
Pourquoi ?

:oops: Merci d'avance

PS : Je sais que * n'est pas génial mais c'est uniquement pour ma période de test.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 nov. 2006, 12:21

Je pense que ce que tu voudrais, c'est que les données de la seconde table soient celles qui correspondent aux données de la 1ere.

Dans ce cas, là, il faut que tu réalises une jointure. Ca sert à dire au SGBD "Cette ligne de la table 1 est associée à cette ligne de la table 2"

La syntaxe est la suivante :

Code : Tout sélectionner

SELECT t1.champ1, t2.champ1 FROM table1 t1 JOIN table2 t2 ON t1.champ_jointure = t2.champ_jointure
Ensuite, tu peut ajouter des order by comme tu veux ;)

NB : t1.champ_jointure et t2.champ_jointure sont les champs qui permettent de mettre en relation les données des 2 tables ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2291 Messages

28 nov. 2006, 13:19

Je pense que ce que tu voudrais, c'est que les données de la seconde table soient celles qui correspondent aux données de la 1ere.

Dans ce cas, là, il faut que tu réalises une jointure. Ca sert à dire au SGBD "Cette ligne de la table 1 est associée à cette ligne de la table 2"

La syntaxe est la suivante :

Code : Tout sélectionner

SELECT t1.champ1, t2.champ1 FROM table1 t1 JOIN table2 t2 ON t1.champ_jointure = t2.champ_jointure
Ensuite, tu peut ajouter des order by comme tu veux ;)

NB : t1.champ_jointure et t2.champ_jointure sont les champs qui permettent de mettre en relation les données des 2 tables ;)
Oui juste merci :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.