J'ai trois tables qui ont la structure suivante
CITATION
`photo`
`id_photo` smallint(5) unsigned NOT NULL auto_increment,
`nom_fichier` varchar(50) NOT NULL default '',
`id_pays` smallint(6) NOT NULL default '0',
`nom_auteur` varchar(50) NOT NULL default '',
`compteur` smallint(5) NOT NULL default '0',
`vote` smallint(5) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`ratio` decimal(4,2) NOT NULL default '1.00',
`photo_com`
`id_photo` smallint(5) unsigned NOT NULL default '0',
`langue` char(3) NOT NULL default '',
`alt` varchar(127) NOT NULL default 'photo de suede - photo of sweden',
`name` varchar(63) NOT NULL default 'sweden',
`titre` varchar(128) NOT NULL default '',
`sous_titre` varchar(128) NOT NULL default '',
`comment` text NOT NULL,
`recherche` enum('oui','non') NOT NULL default 'oui',
`traducteur` varchar(127) NOT NULL default 'François Lambert',
`urltraducteur` varchar(127) NOT NULL default 'http://www.photos-suede.com/',
`traducteuremail` varchar(127) NOT NULL default '',
`lienphoto`
`id_photo` smallint(5) unsigned NOT NULL default '0',
`id_theme` smallint(5) unsigned NOT NULL default '0',
`ordre_aff` tinyint(3) NOT NULL default '127',
`id_photo` smallint(5) unsigned NOT NULL auto_increment,
`nom_fichier` varchar(50) NOT NULL default '',
`id_pays` smallint(6) NOT NULL default '0',
`nom_auteur` varchar(50) NOT NULL default '',
`compteur` smallint(5) NOT NULL default '0',
`vote` smallint(5) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`ratio` decimal(4,2) NOT NULL default '1.00',
`photo_com`
`id_photo` smallint(5) unsigned NOT NULL default '0',
`langue` char(3) NOT NULL default '',
`alt` varchar(127) NOT NULL default 'photo de suede - photo of sweden',
`name` varchar(63) NOT NULL default 'sweden',
`titre` varchar(128) NOT NULL default '',
`sous_titre` varchar(128) NOT NULL default '',
`comment` text NOT NULL,
`recherche` enum('oui','non') NOT NULL default 'oui',
`traducteur` varchar(127) NOT NULL default 'François Lambert',
`urltraducteur` varchar(127) NOT NULL default 'http://www.photos-suede.com/',
`traducteuremail` varchar(127) NOT NULL default '',
`lienphoto`
`id_photo` smallint(5) unsigned NOT NULL default '0',
`id_theme` smallint(5) unsigned NOT NULL default '0',
`ordre_aff` tinyint(3) NOT NULL default '127',
La premiere table, photo, me stocke les infos sur la photo
La deuxieme table, photo_com, me stocke les commentaires dans les différentes langues
La troisieme table, lienphoto, me stocke la présence de la photo dans une ou plusieurs catégories thématiques.
Je souhaite récupérer
- Les enregistrements de la table photo (uniquement le champ nom_fichier)
- Les enregistrements de la table photo_com pour lesquels langue=une langue donnée (prenons comme example langue='fr')
+ pour toutes photos étant dans une certaines catégories par exemple, id_theme=41.
Pour l'instant, je fais cela en plusieurs requetes :
- select des id_photo dans lienphoto pour lesquels id_photo=41
Parcourt en boucle du résultat et récupération des données dans les autres tables. Donc, une requete en plus par photo...
En gros, ce que je veux faire.
CITATION
SELECT photo.nom_fichier, photo_com.id_photo .....etc.... photo_com.comment
FROM photo, photo_com, lienphoto
WHERE photo.id_photo=photo_com.id_photo=lienphoto.id_photo
AND photo_com.langue='fr'
AND lienphoto.id_theme=41
FROM photo, photo_com, lienphoto
WHERE photo.id_photo=photo_com.id_photo=lienphoto.id_photo
AND photo_com.langue='fr'
AND lienphoto.id_theme=41
Bon, ca ne marche pas et ca m'étonne pas. Il faudrait sans doute joindre les tables quelque part... Si quelqu'un sait faire
Merci d'avance
François