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 :

Sous-conditions pour l'affichage d'un champ en requête - Erreur 4104 [2017]


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur technique
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur technique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Sous-conditions pour l'affichage d'un champ en requête - Erreur 4104
    Bonjour,
    J'utilise MS SQL Server 2017 sur une base de données que j'ai convertie d'une version compact à une version "full MS SQL".
    Vous trouverez ci-joint le script de création des tables qui entrent en jeu dans ma recherche

    J'utilise la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select
    ref_typ_eve.prefixe_sync_eve,
    type_deb.libelle_type AS type_debut,
    debut.no_post AS debut,
    type_fin.libelle_type AS type_fin,
    fin.no_post AS fin
    	from anomalie
    	left join evenement on anomalie.evenement_id = evenement.evenement_id
    	left join ref_typ_eve on evenement.type_evenement_id = ref_typ_eve.type_evenement_id
    	left join ouvrage debut on evenement.deb_ouvrage_id = debut.ouvrage_id
    		left join ref_typ_ouv type_deb on debut.type_ouvrage_id = type_deb.type_ouvrage_id
    	left join ouvrage fin on evenement.fin_ouvrage_id = fin.ouvrage_id
    		left join ref_typ_ouv type_fin on fin.type_ouvrage_id = type_fin.type_ouvrage_id

    La table ouvrage liste des ouvrages. Chacun d'eux a un type type_ouvrage_id explicité dans ref_typ_ouv.
    Les ouvrages portent des évènements (dans la table evenement) qui peuvent être entre autres des anomalies (type_evenement_id = 1, abréviation ANM). Ces anomalies ont une adresse de début et une adresse de fin sur un tronçon, qui s'exprime selon les ouvrages du tronçon.

    Le problème est que dans ma table ouvrage, les ouvrages de type 'extremite' (type_ouvrage_id = 2) n'ont pas de numéro postal 'no_post' et ma requête doit renvoyer 'AMONT' ou 'AVAL'.

    J'ai donc essayé de remplacer 'debut.no_post AS debut' (et je dois faire de même avec 'fin.no_post AS fin' par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    iif(debut.no_post IS NULL,
    	iif(extremite.type_extremite=1,
    		'amont',
    		'aval'),
    	debut.no_post)
    	AS debut,
    mais j'obtiens un message d'erreur 4104 - L'identificateur en plusieurs parties "extremite.type_extremite" ne peut pas être lié.

    Je n'ai aucune idée des fonctionnalités ou instructions qui me permettraient d'atteindre mon but dans ce cas.

    J'utiliserai ce code pour huit select différents, deux fois à chaque fois, donc si une procédure ou fonction est possible, ça me faciliterait grandement la tâche

    En espérant n'avoir rien oublié d'essentiel...
    Merci d'avance (et déjà pour toute l'aide que j'ai trouvé sur le site et le forum pour résoudre différents problèmes auxquels j'ai été confrontés)
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    La table extrémité n'est pas jointe dans la requête, ce qui explique votre message d'erreur.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur technique
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur technique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci
    ça fonctionne carrément mieux tout d'un coup...

    Je suis surpris, car quand j'appelais un champ d'une autre table que j'avais oublié de joindre, il ne me semblait pas avoir ce message d'erreur

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

Discussions similaires

  1. [XL-2010] somme sous condition pour remise pro
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/04/2012, 09h56
  2. Condition pour l'affichage d'un report
    Par Sympatico_3604 dans le forum Jasper
    Réponses: 4
    Dernier message: 01/12/2010, 15h48
  3. Condition pour affecter valeur dans un champ
    Par mcorvaisier dans le forum IHM
    Réponses: 9
    Dernier message: 20/06/2008, 15h45
  4. Réponses: 1
    Dernier message: 26/06/2007, 09h08
  5. Condition pour l'affichage d'une boite de message
    Par Virgile59 dans le forum Access
    Réponses: 19
    Dernier message: 05/10/2005, 14h22

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