OVH Cloud OVH Cloud

le UNION fait un distinct ?

4 réponses
Avatar
Yan
Salut,

Je tombe sur un truc un peu bizarre :

considérons la requete 1 :

SELECT champ
FROM table
WHERE champ2 = 1


qui retourne :
champ
------
NULL
1
2
NULL
3
2
NULL
3

maintenant, la requête 2 :
SELECT champ
FROM table2
WHERE autechamp = 2

qui retourne :
champ
------
753

maintenant, je fais un union :
(
SELECT champ
FROM table
WHERE champ2 = 1
)
UNION
(
SELECT champ
FROM table2
WHERE autechamp = 2
)

je pensais avoir comme résultat :

champ
------
NULL
1
2
NULL
3
2
NULL
3
753

eh bien... NON ! il me fait un distinct ! J'obtiens :

champ
------
NULL
1
2
3
753

tous les doublons de la première requête ont disparu... est ce que c'est
normal ?

une autre façon (plus simple) de le voir :
SELECT 1
UNION SELECT 2
UNION SELECT 2
UNION SELECT 2
UNION SELECT 2

on obtient :
1
2

comment faire pour conserver tous les enregistrements ?

Merci d'avance,

Yan.

4 réponses

Avatar
VUILLERMET Jacques
Voir UNION ALL.

Jacques.

"Yan" ~~SP~~AMcom> a écrit dans le message de news:

Salut,

Je tombe sur un truc un peu bizarre :

considérons la requete 1 :

SELECT champ
FROM table
WHERE champ2 = 1


qui retourne :
champ
------
NULL
1
2
NULL
3
2
NULL
3

maintenant, la requête 2 :
SELECT champ
FROM table2
WHERE autechamp = 2

qui retourne :
champ
------
753

maintenant, je fais un union :
(
SELECT champ
FROM table
WHERE champ2 = 1
)
UNION
(
SELECT champ
FROM table2
WHERE autechamp = 2
)

je pensais avoir comme résultat :

champ
------
NULL
1
2
NULL
3
2
NULL
3
753

eh bien... NON ! il me fait un distinct ! J'obtiens :

champ
------
NULL
1
2
3
753

tous les doublons de la première requête ont disparu... est ce que c'est
normal ?

une autre façon (plus simple) de le voir :
SELECT 1
UNION SELECT 2
UNION SELECT 2
UNION SELECT 2
UNION SELECT 2

on obtient :
1
2

comment faire pour conserver tous les enregistrements ?

Merci d'avance,

Yan.




Avatar
Denis
::
:: une autre façon (plus simple) de le voir :
:: SELECT 1
:: UNION SELECT 2
:: UNION SELECT 2
:: UNION SELECT 2
:: UNION SELECT 2
::
:: on obtient :
:: 1
:: 2
::
:: comment faire pour conserver tous les enregistrements ?
::


bonsoir :)

avec un UNION ALL ?

@++
Avatar
Yan
Bonjour,

Merci à vous 2... Je trouve ça moyennement logique, à mon sens, ALL est
l'option par défaut et on doit spécifier le DISTINCT... Mais bon, maintenant
je le sais :D

a+

Yan

Denis wrote:
une autre façon (plus simple) de le voir :
SELECT 1
UNION SELECT 2
UNION SELECT 2
UNION SELECT 2
UNION SELECT 2

on obtient :
1
2

comment faire pour conserver tous les enregistrements ?







bonsoir :)

avec un UNION ALL ?

@++


Avatar
lionelp
Bonjour,

La norme ANSI en a décidé autrement.

Cordialement,
LionelP


"Yan" ~~SP~~AMcom> wrote in message
news:
Bonjour,

Merci à vous 2... Je trouve ça moyennement logique, à mon sens, ALL est
l'option par défaut et on doit spécifier le DISTINCT... Mais bon,


maintenant
je le sais :D

a+

Yan

Denis wrote:
>>> une autre façon (plus simple) de le voir :
>>> SELECT 1
>>> UNION SELECT 2
>>> UNION SELECT 2
>>> UNION SELECT 2
>>> UNION SELECT 2
>>>
>>> on obtient :
>>> 1
>>> 2
>>>
>>> comment faire pour conserver tous les enregistrements ?
>>>
>
>
> bonsoir :)
>
> avec un UNION ALL ?
>
> @++