Union ou pas union?

Résolu
Mira -  
 Mira -
Bonjour,

Je suis débutante en SQL et je ne sais pas trop comment m'y prendre pour faire une requête spécifique.

J'ai un onglet article qui contient des articles. Un onglet vidéo qui contient des vidéos et un onglet solution qui contient une sélection des articles/vidéo présents dans les deux premiers onglets en fonction d'un thème.

Les articles et les vidéos sont dans une même table avec un filtre pour s'il s'agit d'un article ou d'une vidéo. J'ai créé une deuxième table pour l'onglet thème, qui contient différents thèmes

J'ai crée une table de liaison qui contient un clé étrangère article et un clé étrangère thème.

Voici mes tables

- TABLE ARTICLES
- id
- titre
- chapeau
- url_image
- type

TABLE THEME
- id
- theme

- TABLE ARTICLE THEME
- id
- article_id
- article_theme

Je voudrais faire apparaitre les articles qui ont un thème.

Je pensais faire un union en sélectionnant mes 2 clés étrangères et dire que le thème ne doit pas être null mais je n'ai pas le même nombre de colonnes... du coup je ne sais pas comment faire...

Pourriez-vous m'aider svp ?

Merci beaucoup :)

7 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Un left join serait plus adéquat je pense.
0
Mira
 
Je fais un left join sur ma table article thème ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Oui
un truc du genre
SELECT *
FROM article_theme AT
LEFT JOIN theme T ON T.id = AT.article_theme
LEFT JOIN article A ON A.id = AT.article_id

0
Mira
 
Oh merci :)

Je viens de me renseigner sur le left joint et ça a l'air de marcher avec ce code

SELECT *
FROM article
LEFT JOIN theme ON article.id = theme.id
WHERE theme is NOT NULL


Tu crois qu'il est propre ? car je n'ai pas eu besoin de ma table article_theme
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
L'id du theme... n'est pas l'id des articles.
Utilises la requête que je t'ai donné
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mira
 
Il ne trouve pas AT, du coup j'ai fait un mixte des deux.

SELECT *
FROM article_theme 
LEFT JOIN theme ON article_theme.id = article_theme.id
LEFT JOIN article  ON article.id = article_theme.id


Mais ça me fait des doublons...
0
Mira
 
Dsl du dérangement mais j'ai un autre problème :/

Quand je veux regarder ce qu'il y'a dans ma table theme_article, j'ai ce message qui apparait :

#1054 - champs theme.id inconnue dans order clause.

Je n'arrive pas à savoir pourquoi il me dit ça...

=> problème résolu, j'ai supprimé ma table et rallumé mon ordinateur
0
Mira
 
J'ai relue plus posément ton code et ajouté ce qui manquait :

SELECT *
FROM article_theme as AT
LEFT JOIN theme as T ON T.id = AT.theme_id
LEFT JOIN article as A ON A.id = AT.article_id


Merci de ton aide :)
0