Probleme avec UNION

Eléphant du PHP | 294 Messages

30 mars 2010, 14:15

Bonjour
j'ai une table qui en relie 3 autres (rubrique, page et sous-rubrique), je voudrait réunir tout les entrées qui ont une page non Null et une sous rubrique Null et toutes celle qui on l'inverse (page null et sous rubrique non null), mais les resultats ne se combinent pas, tots ce passe comme si la premiere requete empechait la seconde de s'effectuer ( alors que seule elle fonctionne). Donc j'ai bien le resultat de la premiere mais ne s'y ajoute pas celui de la seconde.
a noter dans chaque requete j'interroge d'abord la même table lk_rub_page ( alias LK1 puis LK2) filtrée sur la colonne IDrubrique

Merci d'avance pour votre aide
SELECT LK1.IDssrubrique, ssrub_cms_contents.label AS TT_SS_RUB,ssrub_cms_contents.IDssrubrique,LK1.IDssrubrique,ssrub_cms.online
FROM lk_rub_page AS LK1, ssrub_cms_contents LEFT JOIN ssrub_cms ON ssrub_cms.IDssrubrique=ssrub_cms_contents.IDssrubrique
WHERE 
LK1.IDssrubrique IS NOT NULL 
AND LK1.IDpage IS NULL 
AND LK1.IDrubrique= 8 
AND ssrub_cms_contents.IDssrubrique= LK1.IDssrubrique 

UNION 

SELECT LK2.IDpage,cms_pg_content.TTmenu AS TT_PG ,LK2.IDssrubrique, cms_pg_content.varUrl AS VARURL, cms_pg.IDtemplate
FROM lk_rub_page AS LK2, cms_pg_content LEFT JOIN cms_pg ON cms_pg.IDpage=cms_pg_content.IDpage
WHERE LK2.IDpage IS NOT NULL AND LK2.IDssrubrique IS NULL
AND LK2.IDrubrique= 8
AND  cms_pg_content.IDpage=LK2.IDpage 

Eléphant du PHP | 217 Messages

31 mars 2010, 01:04

Bonsoir,
les unions de requete vont combiner les résultats de requetes : elles vont supprimer les doublons (sauf en utilisant le prédicat ALL).

Toutefois les données combinées doivent être de même type et les colonnes doivent avoir le même nom et le nombre des colonnes doit être identique . Dans le cas ou les colonnes n'ont pas le même nom, vous devez utilisez des alias.
De plus les requetes doivent être entourées de parentheses.
(SELECT champ1, champ2 FROM table1)
UNION
(SELECT champ3 AS champ1, champ4 AS champ2 FROM table2)

Eléphant du PHP | 294 Messages

31 mars 2010, 10:31

J'ai pas reussi a faire ce que je voulais, mais c'est parce que ce n'est pas possible avec un UNION , en tous cas maintenant je comprend mieux les UNION. merci