Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction de valeur

6 réponses
Avatar
sfauchille
Bonjour.

Petit probl=E8me qui va faire hurler M. BROUARD (j'ai son livre...)
Une Table T1 Contenant 2 colonnes : DateDebut et DateFin
Une table T2 contenant 1 colonne : Date

Je voudrais extraire toute les date de la table T2 qui ne sont pas
dans les plages de T1

Exemple
T1
09:00:00
10:10:00
11:30:00
12:00:00
13:30:00
15:00:00

T2
DateDebut DateFin
10:00:00 11:00:00
13:00:00 14:00:00

Devrait me retourner les valeur T1 suivantes :
09:00:00
11:30:00
12:00:00
15:00:00

D'avance merci pour votre aide

6 réponses

Avatar
sfauchille
On 12 juin, 14:16, ""
wrote:
Bonjour.

Petit problème qui va faire hurler M. BROUARD (j'ai son livre...)
Une Table T1 Contenant 2 colonnes : DateDebut et DateFin
Une table T2 contenant 1 colonne : Date

Je voudrais extraire toute les date de la table T2 qui ne sont pas
dans les plages de T1

Exemple
T1
09:00:00
10:10:00
11:30:00
12:00:00
13:30:00
15:00:00

T2
DateDebut              DateFin
10:00:00                11:00:00
13:00:00                14:00:00

Devrait me retourner les valeur T1 suivantes :
09:00:00
11:30:00
12:00:00
15:00:00

D'avance merci pour votre aide



J'ai eu la réponse, je la publie si jamais ça interesse quelqu'un

solution 1 :
SELECT madate
FROM t1
LEFT JOIN
t2
ON t1.madate BETWEEN t2.datedebut AND t2.datefin
WHERE t2.datedebut IS NULL
;

Solution 2 :
SELECT madate
FROM t1
WHERE NOT EXISTS
( SELECT 1
FROM t2
WHERE t1.madate BETWEEN t2.datedebut AND t2.datefin
)
;
Avatar
SQLpro
Entre nous le NOT EXISTS est quand même plus élégants !

Fred Brouard - SQL pro ! ;-)


On 12 juin, 15:07, ""
wrote:
On 12 juin, 14:16, ""
wrote:



> Bonjour.

> Petit problème qui va faire hurler M. BROUARD (j'ai son livre...)
> Une Table T1 Contenant 2 colonnes : DateDebut et DateFin
> Une table T2 contenant 1 colonne : Date

> Je voudrais extraire toute les date de la table T2 qui ne sont pas
> dans les plages de T1

> Exemple
> T1
> 09:00:00
> 10:10:00
> 11:30:00
> 12:00:00
> 13:30:00
> 15:00:00

> T2
> DateDebut DateFin
> 10:00:00 11:00:00
> 13:00:00 14:00:00

> Devrait me retourner les valeur T1 suivantes :
> 09:00:00
> 11:30:00
> 12:00:00
> 15:00:00

> D'avance merci pour votre aide

J'ai eu la réponse, je la publie si jamais ça interesse quelqu'un

solution 1 :
SELECT madate
FROM t1
LEFT JOIN
t2
ON t1.madate BETWEEN t2.datedebut AND t2.datefin
WHERE t2.datedebut IS NULL
;

Solution 2 :
SELECT madate
FROM t1
WHERE NOT EXISTS
( SELECT 1
FROM t2
WHERE t1.madate BETWEEN t2.datedebut AND t2.datefin
)
;


Avatar
sfauchille
On 12 juin, 15:49, SQLpro wrote:
Entre nous le NOT EXISTS est quand même plus élégants !

Fred Brouard - SQL pro ! ;-)

On 12 juin, 15:07, ""
wrote:



> On 12 juin, 14:16, ""
> wrote:

> > Bonjour.

> > Petit problème qui va faire hurler M. BROUARD (j'ai son livre...)
> > Une Table T1 Contenant 2 colonnes : DateDebut et DateFin
> > Une table T2 contenant 1 colonne : Date

> > Je voudrais extraire toute les date de la table T2 qui ne sont pas
> > dans les plages de T1

> > Exemple
> > T1
> > 09:00:00
> > 10:10:00
> > 11:30:00
> > 12:00:00
> > 13:30:00
> > 15:00:00

> > T2
> > DateDebut              DateFin
> > 10:00:00                11:00:00
> > 13:00:00                14:00:00

> > Devrait me retourner les valeur T1 suivantes :
> > 09:00:00
> > 11:30:00
> > 12:00:00
> > 15:00:00

> > D'avance merci pour votre aide

> J'ai eu la réponse, je la publie si jamais ça interesse quelqu'un

> solution 1 :
> SELECT  madate
> FROM    t1
>     LEFT JOIN
>         t2
>         ON  t1.madate BETWEEN t2.datedebut AND t2.datefin
> WHERE   t2.datedebut IS NULL
> ;

> Solution 2 :
> SELECT  madate
> FROM    t1
> WHERE   NOT EXISTS
>         (   SELECT  1
>             FROM    t2
>             WHERE   t1.madate BETWEEN t2.datedebut AND t2. datefin
>         )
> ;- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Merci Fred, c'est celle que j'ai utilisé. Heuresement que j'ai ton
bouquin ;)
Avatar
TedIF
SQLpro a formulé la demande :
Entre nous le NOT EXISTS est quand même plus élégants !

Fred Brouard - SQL pro ! ;-)




Et en terme de performance, il y a t-il une différence ?

Dominique

--

Dominique
Avatar
Fred BROUARD
TedIF a écrit :
SQLpro a formulé la demande :
Entre nous le NOT EXISTS est quand même plus élégants !

Fred Brouard - SQL pro ! ;-)




Et en terme de performance, il y a t-il une différence ?



la plupart du temps oui, le EXISTS n'exigeant pas de véhiculer la valeur...

A +

Dominique





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Avatar
TedIF
Fred BROUARD a pensé très fort :
TedIF a écrit :
SQLpro a formulé la demande :
Entre nous le NOT EXISTS est quand même plus élégants !

Fred Brouard - SQL pro ! ;-)




Et en terme de performance, il y a t-il une différence ?



la plupart du temps oui, le EXISTS n'exigeant pas de véhiculer la valeur...

A +

Dominique






Heu... mieux vaut tard que jamais : merci bien

--

Dominique