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

MS SQL Server Discussion :

Sous requete en cascade ou curseur ??


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut Sous requete en cascade ou curseur ??
    Bonjour j'ai un pb avec une requete, voici ma table :

    Route date code Freq Maxi
    ---------------------------------------------------------------------
    O101 14/12/2004 15300 2 ici je dois mettre 6
    O101 14/12/2004 15300 6 ici je dois mettre 6
    O101 14/12/2004 15300 1 ici je dois mettre 6

    O102 15/12/2004 14877 8 ici je dois mettre 8
    O102 15/12/2004 14877 5 ici je dois mettre 8
    O102 15/12/2004 14877 7 ici je dois mettre 8
    ......

    Vous pouvez voir que j'ai plusieurs paquets de lignes qui different avec le champ Freq, pour chaque paquets je dois mettre dans le champ Maxi ma plus grande valeur de Freq.

    J'ai essayé de faire un UPDATE SET Max = Maxi(freq) et des sous requetes mais je n'y arrive pas et les curseurs je n'y comprends rien.
    Je travail sous sql server 2000.
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 50
    Points : 45
    Points
    45
    Par défaut
    si Route est ta clé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update t set t.Maxi=t1.MaxFreq from [ta_table] t inner join (select Route, Max(Freq) as MaxFreq from [ta_table] group by Route) t1 on t.Route = t1.Route
    ça devrait marcher

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select Max(Freq) m, route r, date d
    from VotreTable
    into #t
    group by route, date
     
    update VotreTable
    set maxi=m
    from  #t
    where r=route 
    and d=date

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    ta solution me plait bien fadace mais apparemment sql server a un pb avec le mots clé INTO, il me dit syntax incorrect near INTO

    J'ai essayé le mot clé IN aussi mais il me sort la meme erreur

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 50
    Points : 45
    Points
    45
    Par défaut
    il faut créer la table temporaire avant

  6. #6
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    je suis pas sur de comprendre là, un table temporaire c'est une création classique et un esuppression juste apres mes requetes ?

    parce que j'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE #T
    (
    m tinyint (1),
    r varchar (10),
    d datetime (8)
    )
    et il me sort tjr la meme erreur :

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 50
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par yan77
    il faut créer la table temporaire avant
    argg, j'ai dit des conneries : y a pas besoin de créer la table avant désolé !


    faut juste passer le into avant from :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select Max(Freq) m, route r, date d 
    into #t 
    from VotreTable 
    group by route, date

  8. #8
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    ouai la requete fonctionne mais je n'ai pas le resultat espéré, je vais me debrouillé avec ca merci, je mettrai le résolu plus tard

  9. #9
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    ca fonctionne merci !

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

Discussions similaires

  1. [MySQL 4] Sous Requete IN .. SELECT ...
    Par pataluc dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2004, 15h54
  2. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  3. [Débutante]Sous requete
    Par mimi74 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/07/2004, 14h02
  4. probleme de sous requete
    Par JD_Lyon dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/04/2004, 22h18
  5. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54

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