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 :

Problème requêtes imbriquées et allias


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut Problème requêtes imbriquées et allias
    Bonjour à tous,

    Je suis en train de réaliser une requête qui est censée me sortir un tableau me permettant un suivi des données de la base de données.

    J'ai besoin de récupérer une valeur à un instant t de l'exécution de la requête et j'avais pensé avoir recours à l'utilisation d'un allias mais ça ne fonctionne pas. Je vous met la requête en copie afin de vous donner une idée de ce que je veux faire:

    (l'allias que je souhaite réutiliser est l'allias a1)

    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
    20
    21
    22
    23
    24
    25
    26
    27
     
    SELECT
    [...] ,
    (SELECT Username
    	FROM viza.dbo.UserJeu AS a1
    	WHERE UserId = (SELECT UserId_FK
    			FROM viza.dbo.VisitUserJeu
    			WHERE VisitRoleId_FK = (SELECT VisitRoleId
    					FROM viza.dbo.VisitRoleJeu
    					WHERE Name = 'Auditeur')
    			AND VisitId_FK = viza.dbo.SourceJeu.SourceId))
    	AS "Auditeur n°1",
    (SELECT Username
    	FROM viza.dbo.UserJeu
    	WHERE UserId <> (SELECT UserId
    			 FROM viza.dbo.UserJeu
    			 WHERE Username = a1)
    	AND UserId = (SELECT UserId_FK
    			  FROM viza.dbo.VisitUserJeu
    			  WHERE VisitRoleId_FK = (SELECT VisitRoleId
    					  FROM viza.dbo.VisitRoleJeu
    					  WHERE Name = 'Auditeur')
    			  AND VisitId_FK = viza.dbo.SourceJeu.SourceId))
    	AS "Auditeur n°2",
    [...]
    FROM viza.dbo.SourceJeu
    WHERE [...]
    Si quelqu'un à une idée...
    Merci d'avance.

    M. PILARD

  2. #2
    Invité
    Invité(e)
    Par défaut
    Des idées j'en ai beaucoup...
    Mais comment t'aider avec un bout de requête tronquée, sans connaitre ce que tu cherches à faire et sans aucune information sur le modèle, ni structure de tables...
    Et "ça ne marche pas" est une information particulièrement vague...
    Si tu veux des réponses, il va falloir être un poil plus précis.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    Le reste de la requête n'est pas nécessaire et fonctionne corectement.

    Je souhaite en fait récupérer le résultat affiché dans la colonne nommée "Auditeur n°1" afin d'afficher dans la colonne "Auditeur n°2" une valeur qui est bien différente...

    J'ai essayé de mettre le résultat en a1 pour faire ma comparaison sur a1 mais je me fais jetter avec le message d'erreur suivant:

    Nom de colonne non valide*: 'a1'.

  4. #4
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    a1 etant un alias dans une sous requete, la requete au dessus ne peut pas l'atteindre.

    Je pense que votre requete est a revoir, mais ne sachant pas ce que vous voulez exactement et ne connaissant pas le modele de données, il va etre tres difficile de vous répondre.

    Bon courage

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    Le requête complète est la suivante:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    SELECT
    	Date,
    	(SELECT Name
    		FROM viza.dbo.SectorJeu
    		WHERE SectorId = viza.dbo.SourceJeu.SectorId_FK)
    		AS "Secteur",
    	(SELECT Username
    		FROM viza_nestle.dbo.UserJeu AS a1
    		WHERE UserId = (SELECT UserId_FK
    				FROM viza.dbo.VisitUserJeu
    				WHERE VisitRoleId_FK = (SELECT VisitRoleId
    							FROM viza.dbo.VisitRoleJeu
    							WHERE Name = 'Auditeur')
    				AND VisitId_FK = viza.dbo.SourceJeu.SourceId))
    		AS "Auditeur n°1",
    	(SELECT Username
    		FROM viza.dbo.UserJeu
    		WHERE UserId <> (SELECT UserId
    				 FROM viza.dbo.UserJeu
    				 WHERE Username = a1)
    		AND UserId = (SELECT UserId_FK
    				  FROM viza.dbo.VisitUserJeu
    				  WHERE VisitRoleId_FK = (SELECT VisitRoleId
    							  FROM viza.dbo.VisitRoleJeu
    							  WHERE Name = 'Auditeur')
    				  AND VisitId_FK = viza.dbo.SourceJeu.SourceId))
    		AS "Auditeur n°2",
    	(SELECT Description
    		FROM viza.dbo.ActionJeu
    		WHERE SourceId_FK = viza.dbo.SourceJeu.SourceId)
    		AS "Action prise",
    	(SELECT Name
    		FROM viza.dbo.CategoryJeu
    		WHERE CategoryId = (SELECT CategoryId_FK
    				   FROM viza.dbo.ActionJeu
    				   WHERE SourceId_FK = viza.dbo.SourceJeu.SourceId))
    		AS "Type d'action",
    	(SELECT Delay
    		FROM viza.dbo.ActionJeu
    		WHERE SourceId_FK = viza.dbo.SOurceJeu.SourceId)
    		AS "Délai d'action",
    	(SELECT Username
    		FROM viza.dbo.UserJeu
    		WHERE UserId = (SELECT UserId_FK
    				FROM viza.dbo.ActionJeu
    				WHERE SourceId_FK = viza.dbo.SourceJeu.SourceId))
    		AS "Responsable d'action",
    	FileURL AS "Fichier archivé"
    FROM viza.dbo.SourceJeu
    WHERE TypeId_FK = (SELECT SourceTypeId
    		FROM viza.dbo.SourceTypeJeu
    		WHERE Name = 'Audit de secteur')
    Pour contourner mon problème, il serait parfait de pouvoir sotcker la valeur de la sous requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    (SELECT Username
    	FROM viza_nestle.dbo.UserJeu AS a1
    	WHERE UserId = (SELECT UserId_FK
    			FROM viza.dbo.VisitUserJeu
    			WHERE VisitRoleId_FK = (SELECT VisitRoleId
    						FROM viza.dbo.VisitRoleJeu
    						WHERE Name = 'Auditeur')
    			AND VisitId_FK = viza.dbo.SourceJeu.SourceId))
    	AS "Auditeur n°1",
    dans une variable afin de la réutiliser dans la sous requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    (SELECT Username
    	FROM viza.dbo.UserJeu
    	WHERE UserId <> (SELECT UserId
    			 FROM viza.dbo.UserJeu
    			 WHERE Username = a1)
    	AND UserId = (SELECT UserId_FK
    			  FROM viza.dbo.VisitUserJeu
    			  WHERE VisitRoleId_FK = (SELECT VisitRoleId
    					  FROM viza.dbo.VisitRoleJeu
    					  WHERE Name = 'Auditeur')
    			  AND VisitId_FK = viza.dbo.SourceJeu.SourceId))
    	AS "Auditeur n°2",
    Comment ceci peut se réaliser?

    En pièce jointe du message, un extrait du MCD afin de visualiser au mieux la base de données.

    Cordialement,
    Images attachées Images attachées  

  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Que de sous requetes !!!
    Vous ne pouvez pas employer des jointures dans vos requetes, cela les rendrait beaucoup plus lisible.

    toutes vos sous requetes vous rammenent des valeurs ?

Discussions similaires

  1. Problème requête imbriquée
    Par Alexandre` dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/03/2008, 10h51
  2. [MySQL] Problème requête imbriquée
    Par Little_flower dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/08/2007, 18h58
  3. Problème requêtes imbriquées
    Par jean-paul lepetit dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 20/03/2007, 10h32
  4. Problème Requête Imbriquée
    Par PaulPersonne820 dans le forum Hibernate
    Réponses: 1
    Dernier message: 31/01/2007, 22h40
  5. Problème Requête imbriquée
    Par EddieN dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/10/2006, 07h52

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