Bonjour,
Je suis relativement nouveau dans le monde du sql, aussi je suis désolé d'avance si ma requête peut vous sembler déconcertante.
Le but de ma base de données est de stocker des informations sur des cd d'archives d'une entreprise. L'entreprise effectue 1 sauvegarde par semaine sur CD, chaque CD contient des photos et des articles.
Voici ma BDD :
table CD (idcd, cdnom, cdmots)
table Photo (phid, phnom, phmots, phdate, idcd#)
table article (artid, artmots, idcd#)
idcd, phid et artid sont les 3 clés primaires et correspondent à l'identifiant unique de chaque table. Chaque CD a un ID, un nom et un ensemble de mots-clés (pour une fonction de recherche), idem pour chaque article et chaque photo qui ont tous un ID, un nom et des mots-clés. chaque photo et chaque article a également une clé étrangère pour savoir sur quel CD ils se trouvent.
Ce que je voudrais arriver à faire :
Un simple affichage dans un tableau html de l'ensemble des articles et des photos présents sur chaque CD. L'utilisateur sélectionne le CD dans une liste, puis un tableau s'affiche avec chaque photo, leur nom, leur date, et leurs mots-clés, puis chaque article avec aussi leur nom et mots-clés.
Le problème : tous les CD peuvent contenir à la fois des photos et des articles, ou alors soit l'un soit l'autre. Le tableau final peut donc contenir des cases vides.
J'ai essayé des tas de requêtes SQL, ne connaissant que le basique "select from where"... mais apparemment ça ne suffit pas pour ce que je veux faire.
Quelques exemples de requêtes "simplistes" que j'ai faites (oui je suis vraiment débutant) :
SELECT cd.cdnom, cd.cdmots, photo.phnom, photo.phdate, article.artnom, article.artmots
FROM cd, photo, article
WHERE cd.idcd =1
AND photo.idcd=1
AND article.idcd=1
en gros, j'essayais d'obtenir toutes les infos contenues sur le CD 1 mais ça "ne retourne aucun enregistrement", car il n'y a pas d'articles sur le CD1 donc article.idcd=1 ne donne rien. De même en mettant des OR ... IS NULL, le problème n'est pas résolu.
J'ai aussi essayé avec des LEFT JOIN, le résultats affiché ne va pas non plus.
Quelqu'un saurait m'aider ou m'aiguiller svp ? j'espère avoir pu exposer le problème assez clairement![]()
Partager