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 :

[SQLSERVER2000] Probleme de requete, peut on l'ecrire differement ?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Par défaut [SQLSERVER2000] Probleme de requete, peut on l'ecrire differement ?
    Bonjour,

    J'ai un problème avec une requête qui fonctionne correctement sur une base de données similaire.

    Voici le code de ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE ANAELRHDTA_PARIS..COLLABORATEUR
    SET LB_SERVICE = 
    (
    SELECT DISTINCT s.nom_service
    FROM ANAELRHREC_PARIS..service s
    WHERE RTRIM(CAST(RTRIM(LTRIM(s.CD_SERVICE))+'-'+CAST(s.id_site AS CHAR(1)) AS VARCHAR(10))) = COLLABORATEUR.CD_SERVICE
    AND s.id_site = COLLABORATEUR.CD_STE
    )
    Ce qui marche plus (oui avant ça marchait) c'est le "COLLABORATEUR.CD_SERVICE" et "COLLABORATEUR.CD_STE". Si je met des valeurs fixes à la place ça marche nikel.
    D'autres requêtes de ce type fonctionne sur la base.

    Est il possible de ré-écrire cette requête de manière qu'elle fonctionne ?

    PS : champs, table et base de données sont correctement orthographié(e)s

    PS2 : message d'erreur que j'ai quand j'exécute la requête :
    The column prefix 'COLLABORATEUR' does not match with a table name or alias name used in the query.

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    Bonjour,
    Votre colonne COLLABORATEUR.CD_SERVICE est de type caractère, afin de faciliter la comparaison j'ajouterai la fonction RTRIM pour éliminer les espaces indésirables soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE ANAELRHDTA_PARIS..COLLABORATEUR
    SET LB_SERVICE = 
    (
    SELECT DISTINCT s.nom_service
    FROM ANAELRHREC_PARIS..service s
    WHERE RTRIM(CAST(RTRIM(LTRIM(s.CD_SERVICE))+'-'+CAST(s.id_site AS CHAR(1)) AS VARCHAR(10))) = RTRIM(COLLABORATEUR.CD_SERVICE)
    AND s.id_site = COLLABORATEUR.CD_STE
    )

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Par défaut
    J'ai déjà tester ceci mais ça ne marche pas

  4. #4
    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 : 44
    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
    Par défaut
    Bonjour,

    C'est normal, votre sous requête référence la table de votre UPDATE et n'apparaît pas dans votre sous requête.

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ANAELRHDTA_PARIS..COLLABORATEUR
    SET LB_SERVICE = S.nom_service
    FROM ANAELRHDTA_PARIS..COLLABORATEUR C
    JOIN ANAELRHREC_PARIS..service S
    	ON RTRIM(CAST(RTRIM(LTRIM(S.CD_SERVICE)) + '-' + CAST(S.id_site AS CHAR(1)) AS VARCHAR(10))) = C.CD_SERVICE
    WHERE S.id_site = COLLABORATEUR.CD_STE
    Il est cependant clair qu'effectuer une jointure sur une chaîne de caractères est déplorable pour les performances.

    PS : champs, table et base de données sont correctement orthographié(e)s
    Non, il manque le schéma entre la base de données et le nom de la table

    @++

Discussions similaires

  1. Réponses: 10
    Dernier message: 27/05/2010, 16h53
  2. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45
  3. PROBLEME DE REQUETE IMBRIQUEE
    Par fleuve007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/12/2003, 15h33
  4. probleme de requete
    Par LineLe dans le forum ASP
    Réponses: 8
    Dernier message: 17/09/2003, 16h47
  5. Probleme de requete
    Par misterbillyboy dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/07/2003, 08h24

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