Jointures complexe....

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Jointures complexe....

par jojolapine » 23 oct. 2008, 12:47

Merci ça marche au poil!
Résolu

par ouckileou » 23 oct. 2008, 11:02

LEFT / RIGHT JOIN oui

par jojolapine » 23 oct. 2008, 10:57

Bonjour,
Milles excuses pour ma question, en fait je me suis rendu compte après que le problème venait du fait qu'un des albums n'avais pas encore de photos lui appartenant, et donc ben ça faisait bugger la joiture...
Merci !
Du coup y a une question que je me pose, comment faire pour selectionner malgrès tout les albums qui n'ont pas de photos, lors d'une jointure, il faut jouer avec LEFT INNER ou autre?

par ouckileou » 23 oct. 2008, 00:29

Il manque déjà la jointure album <-> photos

Toutes les photos de chaque album :

Code : Tout sélectionner

SELECT a.id_album_photos AS id_album_photos, a.nom_url AS nom_url, a.nom AS nom, p.url_mini AS url_mini FROM albums_photos AS a INNER JOIN photos AS p ON p.id_album_photos = a.id_album_photos WHERE a.id_repertoire =5

Jointures complexe....

par jojolapine » 22 oct. 2008, 22:44

Bonjour à tous,
J'ai une jointure qui commence à m'embeter, ça fait une heure que je suis dessus, je vois pas comment prendre la chose...
Tout d'abord la structure des tables:
--
-- Structure de la table `photos`
--

CREATE TABLE IF NOT EXISTS `photos` (
`id_photo` int(10) unsigned NOT NULL auto_increment,
`copyright` varchar(70) NOT NULL,
`id_album_photos` int(10) unsigned NOT NULL,
`nom` varchar(70) NOT NULL,
`url_mini` varchar(150) NOT NULL,
`url_maxi` varchar(150) NOT NULL,
PRIMARY KEY (`id_photo`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=95 ;

--
-- Structure de la table `albums_photos`
--

CREATE TABLE IF NOT EXISTS `albums_photos` (
`id_album_photos` int(10) unsigned NOT NULL auto_increment,
`id_repertoire` int(10) unsigned NOT NULL,
`nom` varchar(70) NOT NULL,
`nom_url` varchar(150) NOT NULL,
`nb_photos` int(11) NOT NULL,
`date_creation` datetime NOT NULL,
PRIMARY KEY (`id_album_photos`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;
Bon jusque là vous me suivez? donc c'est bien simple, il y a des photos qui appartiennent à des albums, rien de très compliqué!

Bon maintenant, voici ce que j'aimerais faire...
Je veux simplement selectionner les albums dont l'id est égal à X, et faire une jointure sur la table photo pour avoir la première image (ou au moins une image quelconque pour l'instant...)...
donc voici ce que j'ai fait:

Code : Tout sélectionner

SELECT a.id_album_photos AS id_album_photos, a.nom_url AS nom_url, a.nom AS nom, p.url_mini AS url_mini FROM photos AS p, albums_photos AS a WHERE a.id_repertoire =5 GROUP BY a.id_album_photos
ça me renvoi bien les infos au niveau des albums, mais l'url de la photo est la même pour tout les enregistrements (j'en ai que deux, mais bon quand même)...
Donc je sais pas ce qu'il faut faire...?
Une idée? Si besoin d'infos supplémentaires: I'm Here!!
Merci d'avance