Union + join
Résolu
Tisiph0n3
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
Tisiph0n3 Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Tisiph0n3 Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Bonsoir, voici mon souci pour un site sous joomla je fais une vue qui va sortir un flux RSS principal, incluant les articles, mais également des évènements (il y a un agenda sur le site), j'ai donc deux tables différentes qui ont quelques colonnes en commun notamment un id de catégorie, je voudrais donc sortir les informations que je veux de ces deux tables en une seule requete, ce qu'il me faudrait ce serait quelque chose a mi chemin entre union et join qui sorte d'abord toutes les lignes de la table 1 rempli toutes les colonnes qui existent dans la table 2 mais pas dans la table 1 avec des null.
Puis qui sorte toutes les lignes de la table 2 en comblant les colonnes qui n'existent pas dans la table 1 avec des null, ce qui donnerait quelque chose comme:
Lignes | Col_table1 | Col_table 2.0 | Col_table 2.1 | etc
Ligne 1 table 1| blabla |null | null | null etc
Ligne x table 2| null |blalbla | blabla | blabla
Je tourne sous MySql (je n'ai pas la possibilité de changer de SGBD), merci :)
Puis qui sorte toutes les lignes de la table 2 en comblant les colonnes qui n'existent pas dans la table 1 avec des null, ce qui donnerait quelque chose comme:
Lignes | Col_table1 | Col_table 2.0 | Col_table 2.1 | etc
Ligne 1 table 1| blabla |null | null | null etc
Ligne x table 2| null |blalbla | blabla | blabla
Je tourne sous MySql (je n'ai pas la possibilité de changer de SGBD), merci :)
A voir également:
- Union + join
- Trait d'union insécable word - Guide
- S'envoyer de l'argent a soi meme western union - Forum Vos droits sur internet
- Join pdf - Télécharger - PDF
- Code erreur western union ✓ - Forum Vos droits sur internet
- Code erreur C9165 Western Union - Forum Réseaux sociaux
1 réponse
Ok c'est bon, j'ai trouvé, si ça peut en aider certains voici la requête:
(SELECT event.rawdata AS rawadata, cat.title AS category_title, cat.alias AS category_alias, article.title AS article_title, article.introtext AS article_introtext, article.fulltext AS article_fulltext
FROM jos_content AS article
LEFT OUTER JOIN jos_jevents_vevent AS event ON event.rawdata IS NULL
JOIN jos_categories AS cat WHERE article.catid = cat.id)
UNION
(SELECT event.rawdata, cat.title AS category_title, cat.alias AS category_alias, article.title AS article_title, article.introtext AS article_introtext, article.fulltext AS article_fulltext
FROM jos_jevents_vevent AS event
LEFT OUTER JOIN jos_content AS article ON article .id IS NULL
JOIN jos_categories AS cat ON event.catid = cat.id)
J'explique quand même au passage:
Select sur tous les articles du site
(SELECT event.rawdata AS rawadata, cat.title AS category_title, cat.alias AS category_alias, article.title AS article_title, article.introtext AS article_introtext, article.fulltext AS article_fulltext FROM jos_content AS article
J'y ajoute la colonne rawadata qui n'existe pas dans la table des articles, mais des évènements avec une condition qui ne sera jamais remplie (rawdata n'est jamais null) ainsi seuls les champs qui m'intéressent dans la table des articles seront retournés, la colonne rawdata faisant office de placeholder, obligatoire car les deux select d'une union doivent porter sur le même nombre de champs
LEFT OUTER JOIN jos_jevents_vevent AS event ON event.rawdata IS NULL
Je récupère le nom de la catégorie de chaque article
JOIN jos_categories AS cat WHERE article.catid = cat.id)
Pour le reste de la requete c'est la même chose, mais à l'envers
(SELECT event.rawdata AS rawadata, cat.title AS category_title, cat.alias AS category_alias, article.title AS article_title, article.introtext AS article_introtext, article.fulltext AS article_fulltext
FROM jos_content AS article
LEFT OUTER JOIN jos_jevents_vevent AS event ON event.rawdata IS NULL
JOIN jos_categories AS cat WHERE article.catid = cat.id)
UNION
(SELECT event.rawdata, cat.title AS category_title, cat.alias AS category_alias, article.title AS article_title, article.introtext AS article_introtext, article.fulltext AS article_fulltext
FROM jos_jevents_vevent AS event
LEFT OUTER JOIN jos_content AS article ON article .id IS NULL
JOIN jos_categories AS cat ON event.catid = cat.id)
J'explique quand même au passage:
Select sur tous les articles du site
(SELECT event.rawdata AS rawadata, cat.title AS category_title, cat.alias AS category_alias, article.title AS article_title, article.introtext AS article_introtext, article.fulltext AS article_fulltext FROM jos_content AS article
J'y ajoute la colonne rawadata qui n'existe pas dans la table des articles, mais des évènements avec une condition qui ne sera jamais remplie (rawdata n'est jamais null) ainsi seuls les champs qui m'intéressent dans la table des articles seront retournés, la colonne rawdata faisant office de placeholder, obligatoire car les deux select d'une union doivent porter sur le même nombre de champs
LEFT OUTER JOIN jos_jevents_vevent AS event ON event.rawdata IS NULL
Je récupère le nom de la catégorie de chaque article
JOIN jos_categories AS cat WHERE article.catid = cat.id)
Pour le reste de la requete c'est la même chose, mais à l'envers