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

Langage SQL Discussion :

SQL server 2005


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut SQL server 2005
    Bonjour,
    J'ai un probleme concernant datetime, je n'arrive pas à rentrer le nombre de caractere neceessaire il me fait chaque fois une erreur en me disant que le nombre de caractere est incorrecte.
    "Taille de l'information est incorrecte." quand je passe par analyse SI.

    Et aussi je voudrais une confirmation sur SQL une date se note #10/05/2009#? Enfin pour obtenir la date du jour pour une requête j'ai essayé Date () mais cela n'a pas l'air de fonctionner.

    J'ai besoin de votre aide

    Je vous remerci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    j'ai pas vraiement bosser sur qsl server mais je sais dans la plus part des SGBD relationnel, la date a souvent le format AAAAYYJJ ! a toi donc de voir en fonction de ce que tu chercher !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    C'est bon j'ai trouvé d'où venait le probleme, il fallait que je mette 0 dans analyse SI

    Et c'est exact ma date dans ma BDD à ce format AAAAMMJJ
    Comment je dois faire pour la changer dois-je faire un forcage comme c'est ecrit dans le tutorial?
    Alors que quand je rentre les données je les mets sous cette forme JJMMAAA et c'est bon

    Merci

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Aussi je souhaite faire une requete du style je veux savoir quels sont les vehicules qui sont libre pour les emprunter, comment je pourrais faire?

    Un vehicule est libre si date du jour pas comprise:
    -entre datedebut datefin de FICHE
    et
    -si la date du jour n'est pas entre datedebutrevision et datefinrevision de REVISER

    Voici le MLD

    FICHE (numfiche, dateetablissement, datedebut, datefin, #idutilisateur, #idvehicule)
    UTILISATEUR (idutilisateur, nomutilisateur, serviceutilisateur)
    VEHICULE (idvehicule, nummineralogique, couleur, kmcompteur, #idmodele)
    MODELE (idmodele, marque, nommodele, puissance, type, nbplaces)
    REVISION (numrevision, libellerevision, coutrevision, kilometrageeffectif)
    REVISER (#idvehicule, #numrévision, datedebutrevision, datefinrevision)


    J'ai tenter pleins de choses mais je n'y arrive pas car les commandes de mes cours ne fonctionne pas avec ce logiciel ou en tout cas une partie.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Citation Envoyé par anthony0742 Voir le message
    Et c'est exact ma date dans ma BDD à ce format AAAAMMJJ
    Comment je dois faire pour la changer dois-je faire un forcage comme c'est ecrit dans le tutorial?
    Alors que quand je rentre les données je les mets sous cette forme JJMMAAA et c'est bon

    Merci
    Le format de la date est une notion d'affichage, pas de stockage.
    Lorsque tu veux afficher une date, tu peux lui préciser le format souhaité si le format par défaut ne te satisfait pas. De même, lorsque tu insères une date dans une colonne de type date, tu lui précises sous quel format tu lui renseignes la date.
    La syntaxe pour ce genre de chose est différente d'un SGBD à un autre, et tu pourras la trouver dans des tutos SQL Server.

    Pour ta requète, je ne connais pas le logiciel que tu utilises, mais tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT idvehicule
    FROM vehicule v
    WHERE NOT EXISTS
    	  (SELECT * FROM fiche f
    	  WHERE v.idvehicule = f.idvehicule
    	  AND getdate() BETWEEN datedebut AND datefin
    	  )
    AND NOT EXISTS
    	  (SELECT * FROM reviser r
    	  WHERE v.idvehicule = r.idvehicule
    	  AND getdate() BETWEEN datedebutrevision AND datefinrevision
    	  )
    Mais méfiez vous si les informations datefin et datefinrevision ne sont pas systématiquement renseignées.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup d'avoir pris le temps de me répondre...

    J'ai testé ta requête et elle marche très bien sous sql
    Le seul probleme est qu'elle ne prend pas en compte que certaines voitures sont dans reviser et avec une date de fin null car on ne sait pas quand elles serant réparés

    Sauriez-vous comment gérer cette contrainte?

    Merci d'avance

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Tu peux utiliser coalesce sur la date de fin pour la remplacer par exemple par 31/12/9999 lorsqu'elle est nulle.
    Sinon tu peux aussi essayer ça :
    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
     
    SELECT idvehicule
    FROM vehicule v
    WHERE NOT EXISTS
    	  (SELECT * FROM fiche f
    	  WHERE v.idvehicule = f.idvehicule
    	  AND getdate() > datedebut
    	  AND (getdate() < datefin OR datefin IS NULL)
    	  )
    AND NOT EXISTS
    	  (SELECT * FROM reviser r
    	  WHERE v.idvehicule = r.idvehicule
    	  AND getdate() > datedebutrevision 
    	  AND (getdate() < datefinrevision OR datefinrevision IS NULL)
    	  )

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    T'es vraiment un professionnel de SQL moi ca fait 3 jour que je suis dessus et toi en 5 minutes tu me sors la bonne commande

    Vraiment merci tu ne peux pas t'imaginer comme ca me sauve!

    Pendant que tu y es

    Est-ce que tu sais
    -Comment je pourrais faire par exemple pour sortir toutes les voitures en reparation le 2janvier 1999 par exemple
    -Comment faire pour changer le kilometrage des voitures avec une commande ALTER,
    -Moi quand je mets par exemple
    SELECT numfiche,idvehicule
    FROM fiche f,vehicule v
    Moi ca me met une erreur(je peux pas creer des raccourci pour 2 tables)
    Et donc du coup, si je veux retourner le nomutilisateur de UTILISATEUR et la dateétablissement de FICHE et Nummineralogique de VEHICULE ca me fait un code vraiment tres long juste pour sortir des données de 3 tables.

    Encore merci et merci d'avance

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    -Comment je pourrais faire par exemple pour sortir toutes les voitures en reparation le 2janvier 1999 par exemple
    Il s'agit simplement de récupérer les véhicules ayant une fiche dont le 2 janvier 1999 est inclus dans l'intervalle datedebut et datefin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT idvehicule
    FROM vehicule v
    JOIN fiche f
    	 ON v.idvehicule = f.idvehicule
    WHERE convert('02/01/1999',datetime) BETWEEN f.datedebut AND f.datefin
    N'ayant jamais utilisé SQL Server, je ne suis pas très à l'aise avec les opérations sur les types date sous SQL Server.
    "convert('02/01/1999',datetime)" est peut être à remplacer.

    -Comment faire pour changer le kilometrage des voitures avec une commande ALTER,
    Ca n'est pas la commande ALTER mais UPDATE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE vehicule
    SET kmcompteur = 143245
    WHERE idvehicule = [Id du vehicule à modifier]
    SELECT numfiche,idvehicule
    FROM fiche f,vehicule v
    Moi ca me met une erreur(je peux pas creer des raccourci pour 2 tables)
    Ca vous met une erreur car la colonne idvehicule se trouve dans les deux tables, cette colonne du SELECT est donc désignée de manière ambigüe.
    Ceci dit, même si ça fonctionnait, vous feriez ici un produit cartésien, car vos conditions de jointure ne sont pas définies.
    Utilisez plutot la syntaxe normalisée, on joint les lignes de la table fiche avec celles de la table vehicule ayant un idvehicule identique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT f.numfiche, v.idvehicule
    FROM fiche f
    JOIN vehicule v
    	 ON f.idvehicule = v.idvehicule
    Et donc du coup, si je veux retourner le nomutilisateur de UTILISATEUR et la dateétablissement
    de FICHE et Nummineralogique de VEHICULE ca me fait un code vraiment tres long juste pour sortir des données de 3 tables.
    Tout dépend ce que tu entends par long :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT u.nomutilisateur, v.nummineralogique, f.dateetablissement
    FROM utilisateur u
    JOIN fiche f
    	 ON u.idutilisateur = f.idutilisateur
    JOIN vehicule v
    	 ON f.idvehicule = v.idvehicule

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Je connaissais meme pas la commande JOIN
    Moi je faisais quelque chose de beaucoup plus compliqué
    Rassure moi ton travail c'est developper des BDD...

    Je te remercie vraiment beaucoup en tout cas


    je vais tester tout ca

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Tu verras que tout ça devient très trivial si tu fais régulièrement du SQL.
    Bon courage

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Snipah Voir le message
    Tu verras que tout ça devient très trivial si tu fais régulièrement du SQL.
    Bon courage
    Merci beaucoup Snipah problème résolu

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

Discussions similaires

  1. [Installation]SQL Server 2005 Express Edition sur XP home
    Par Médiat dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 06/08/2005, 18h22

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