IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[debutant]soustraction datetime & test de nullité dans un select.


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [debutant]soustraction datetime & test de nullité dans un select.
    Bonjours, je ne sais pas si mon titre est bien explicite mais je ne sais pas vraiment comment décrire mon problème en 2 mots ...
    en stage pour mon bts je découvre sql du coté professionnel.

    alors voila : j'ai une requête basique joignant 4 tables entre elles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9
    FROM
        Table1 AS T1
        INNER JOIN Table2 AS T2 ON T1.col1 = T2.col1
        INNER JOIN Table3 AS T3 ON T1.col1 = T3.col1
        INNER JOIN Table4 AS T4 ON T1.col1 = T4.col1
    WHERE T1.col1 = 'x'
    qui me renvoie les résultat désirés ... cependant je cherche a lui ajouter deux choses :
    - la première est que dans ma table1, j'ai 2 colonnes au type datetime (dateDebut & dateFin). je cherche a faire la différence en ces deux colonnes pour en afficher le résultat. (par exemple, dateDebut = 2006-01-25 05:50:50 & dateFin = 2006-01-25 13:01:56, et je souhaite afficher dans le résultat de ma requête, une colonne "Temps passé" qui contiendrai le résultat de la différence).

    - et la seconde ma table T4 contient une colonne type date (dateFin). je souhaite afficher dans le résultat de la requête, une colonne nommé "clot" de type booléen qui sera a false, uniquement si la colonne dateFin de ma table T4 est NULL, et a true tant que la colonne dateFin contient quelque chose.


    un amis m'a dit que cela serait surement possible avec Transact SQL, mais c'est une chose que je ne connais pas du tout

    voila voila, j'espère pour un premier post avoir été suffisamment clair.
    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    un amis m'a dit que cela serait surement possible avec Transact SQL, mais c'est une chose que je ne connais pas du tout
    Transact SQL est en fait une implémentation de la norme SQL, que vous retrouverez dans SQL Server ou Sybase

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT col1,
    		col2,
    		col3,
    		col4,
    		col5,
    		col6,
    		col7,
    		col8,
    		col9,
    		DATEDIFF(second, T1.dateDebut, T1.dateFin) AS TempsPasse,
    		CASE
    			WHEN T4.dateFin IS NULL THEN 0
    			ELSE 1
    		END AS Clot
    FROM dbo.Table1 AS T1
    INNER JOIN dbo.Table2 AS T2 ON T1.col1 = T2.col1
    INNER JOIN dbo.Table3 AS T3 ON T1.col1 = T3.col1
    INNER JOIN dbo.Table4 AS T4 ON T1.col1 = T4.col1
    WHERE T1.col1 = 'x'
    La fonction DATEDIFF vous permet de calculer un intervalle de temps entre deux dates, et vous avez le choix du type de l'intervalle (de millisecond à year).

    Pensez toujours à préfixer :

    - le nom de vos tables par le nom du schéma auquel ils appartiennent
    - le nom de vos colonnes par le nom de l'alias de table à laquelle elles appartiennent, si plusieurs tables sont spécifiées dans votre requête

    @++

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Super ça fonctionne très bien

    (je ne préfixe pas mes colonnes car je précise USE [DataBase] au début de ma requête, par contre je ne l'avais pas fait pour les colonnes et les alias, merci de la remarque.)


    Merci beaucoup, voila mes question on trouver leurs réponses

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Schema et base de données sont deux choses totalement différentes !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CSS][debutant] problème de position de 2 div dans un div
    Par nixonne dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 06/12/2005, 14h12
  2. Debutant SQL : Comment inserer une nouvelle colonne dans une
    Par cquadjul dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/07/2005, 21h34
  3. [debutant][WSAD5.1.1] Test environment settings
    Par Mcmo dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/03/2004, 10h18
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. [XMLRAD] test de nullité
    Par Pm dans le forum XMLRAD
    Réponses: 5
    Dernier message: 29/11/2002, 10h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo