Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/01/2012, 15h46   #1
Invité de passage
 
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
Par défaut Problème comparaison sql

Bonjour. Je suis débutant en langage SQL et j'ai un problème avec une requête.

En effet j'ai une variable @last_edit qui contient une valeur de type datetime.
J'ai une table "ouverture_machine" avec 2 colonnes DateDebut (type datetime) et DateFin(type datetime).

Je désire effectuer une comparaison pour savoir si la valeur de ma variable @last_edit est comprise entre DateDebut et DateFin pour l'ensemble des lignes de la table "ouverture_machine".

Ensuite je souhaite effectuer d'autre requête suivant le résultat de la comparaison.

Pouvez-vous m'aider svp?
tomdu73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 15h59   #2
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
Citation:
Envoyé par tomdu73 Voir le message
Je désire effectuer une comparaison pour savoir si la valeur de ma variable @last_edit est comprise entre DateDebut et DateFin pour l'ensemble des lignes de la table "ouverture_machine".
Bonjour,

Tu devrais regarder du côté du BETWEEN.

Et profites-en pour regarder les cours SQL ça reste la base ça.
Personnellement 90% de mes intérrogations ont été résolues avec ces cours.

P.S : pense à indiquer ton SGBD.
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h10   #3
Invité de passage
 
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
Bonjour.
Désolé pour la réponse tardive.
D'après ce que j'ai pu voir, BETWEEN permet d'évaluer si une donnée est comprise entre une valeur unique et une autre valeur unique.
Pour mon cas, j'essaye d'effectuer une recherche pour savoir si une donnée (Une date) est comprise dans plusieurs intervalles de valeur (En provenance d'une table constituée d'une colonne DateDebut et d'une colonne DateFin).

Je ne sais pas si c'est plus clair ...

PS: J'utilise Microsoft SQL SERVER 2005
tomdu73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h14   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par tomdu73 Voir le message
D'après ce que j'ai pu voir, BETWEEN permet d'évaluer si une donnée est comprise entre une valeur unique et une autre valeur unique.
Non pas nécessairement unique, vous pouvez y mettre des colonnes.
Si j'ai compris votre problème, vous devriez pouvoir vous appuyer sur ce bout de code :
Code :
1
2
3
SELECT count(*) AS nb_lignes
     , count(case when @last_edit BETWEEN DateDebut AND DateFin then 1 end) AS nb_lignes_last_edit
  FROM ouverture_machine
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h20   #5
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
Citation:
Envoyé par tomdu73 Voir le message
Pour mon cas, j'essaye d'effectuer une recherche pour savoir si une donnée (Une date) est comprise dans plusieurs intervalles de valeur (En provenance d'une table constituée d'une colonne DateDebut et d'une colonne DateFin).

Je ne sais pas si c'est plus clair ...
Je ne comprend pas en quoi ma solution n'est pas bonne :
Code :
WHERE MaDate BETWEEN DateDebut AND DateFin
Pourrais-tu mettre un jeu de données ?

EDIT : trop longue...
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h39   #6
Invité de passage
 
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
Citation:
Envoyé par Waldar Voir le message
Non pas nécessairement unique, vous pouvez y mettre des colonnes.
Si j'ai compris votre problème, vous devriez pouvoir vous appuyer sur ce bout de code :
Code :
1
2
3
SELECT count(*) AS nb_lignes
     , count(case when @last_edit BETWEEN DateDebut AND DateFin then 1 end) AS nb_lignes_last_edit
  FROM ouverture_machine
Ta requête fonctionne pour mon cas.

Merci beaucoup!
tomdu73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h09.


 
 
 
 
Partenaires

Hébergement Web