Bonjour, pardonnez moi mais j'ai du mal à expliquer mon problème en une seule ligne.
j'ai dans ma base de données des articles qui ont une photo et des articles sans photos.
Malheureusement je n'arrive pas à créer une requête qui me remonte tout le panier, ne remonte uniquement les articles avec photo.
Pour plus de clarté voici mon code.
SELECT DISTINCT
dc.id_detail_commande,
dc.idx_article,
da.designation,
ac.prix,
ph.photo
FROM detail_commande dc
INNER JOIN article a ON a.id_article = dc.idx_article
INNER JOIN activite ac ON ac.id_activite = a.is_activite
INNER JOIN des_activite da ON da.id_des_activite = ac.des
INNER JOIN photo_article ph ON ph.idx_article = a.id_article
WHERE dc.idx_utilisateur = 1 AND da.designation IS NOT NULL AND ph.deffaut = 1
UNION
SELECT DISTINCT
dc.id_detail_commande,
dc.idx_article,
ar.titre,
ar.prix_unitaire,
ph.photo
FROM detail_commande dc
INNER JOIN article ar ON ar.id_article = dc.idx_article
INNER JOIN photo_article ph ON ph.idx_article = ar.id_article
WHERE dc.idx_utilisateur = 1 AND ar.titre IS NOT NULL AND ph.deffaut = 1
UNION
SELECT DISTINCT
dc.id_detail_commande,
dc.idx_article,
e.designation,
a.prix_unitaire,
me.path
FROM detail_commande dc
INNER JOIN article a ON a.id_article = dc.idx_article
INNER JOIN evenements e ON e.id_evenements =a.is_evenement
INNER JOIN media_evenement me ON me.idx_evenements = e.id_evenements
WHERE dc.idx_utilisateur = 1 AND e.designation IS NOT NULL AND me.une = 1
Tu devrais vérifier les différentes possibilités de JOIN. J'en connais 4 : Inner Join, Left Join, Right Join et Full Outer Join.
Tu as décidé de mettre une colonne étrangère dans la table Photo pour y insérer l'article. Ok. Des photos peuvent ne pas être associées à un article donc cette colonne est NULLABLE.
Mettons à gauche la table photo et à droite la table article :
avec inner join, il faut que Photo.article ait la même valeur que Article.id_article
concrètement, imagine ces quelques lignes
Photo :
{Photo 1, Article 1}
{Photo 2, Article NULL}
Article :
{Article 1}
{Article 2}
{Article 3}
donc avec inner join tu obtiendras
{Photo 1, Article 1} uniquement.
avec Left join tu obtiendras le contenu de Photo
avec Full outer join tu obtiendras les contenus de Photo et d'Article
et enfin avec Right join tu obtiendras ce que tu souhaites soit
{Photo 1, Article 1} et le contenu d'Article et donc les articles qui n'ont pas de photos.