Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2011, 16h05   #1
Membre à l'essai
 
Homme Felicien
Inscription : février 2011
Messages : 44
Détails du profil
Informations personnelles :
Nom : Homme Felicien
Localisation : Belgique

Informations forums :
Inscription : février 2011
Messages : 44
Points : 23
Points : 23
Par défaut Récupérer valeur d'une sous requete, possible ?

Bonjour à tous,

Alors voilà, j'aimerai savoir si il est possible de récuperer une valeur d'une sous requete (requete imbriquée)

J'sais pas si je m'exprime bien donc je vous montre la requete

Code :
1
2
3
4
5
SELECT LastName + ' ' + FirstName AS [Nom]
  FROM dbo.Users
 WHERE UserID = (SELECT RatedID, Job
                   FROM dbo.EvaluationSheet
                  WHERE AssessorID = @id)
Je voudrais récupérer la valeur de job. Possible ? Ca fait un p'tit temps que je cherche mais je vais p-e devoir faire 2 requetes différentes ?
eleve_prog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 11h25   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Je voudrais récupérer la valeur de job
Tu veux l'afficher en deuxième colonne du résultat de ta requête ?

Fais une jointure entre tes deux tables et ajoute simplement la colonne Job au SELECT.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 11h45   #3
Membre à l'essai
 
Homme Felicien
Inscription : février 2011
Messages : 44
Détails du profil
Informations personnelles :
Nom : Homme Felicien
Localisation : Belgique

Informations forums :
Inscription : février 2011
Messages : 44
Points : 23
Points : 23
Oui c'est ça que je veux faire !

Mais je la fais dejà ma jointure , non ? En fait j'ai testé comme ça, mais ça ne fonctionne pas :

Code :
1
2
3
4
5
SELECT LastName + ' ' + FirstName AS [Nom], Job 
  FROM dbo.Users , dbo.EvaluationSheet
 WHERE UserID = (SELECT RatedID, Job
                   FROM dbo.EvaluationSheet
                  WHERE AssessorID = @id)
Pcq le seul lien qu'il y a entre les 2 tables c'est RatedID et le UserID
eleve_prog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 11h59   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par eleve_prog Voir le message
Mais je la fais dejà ma jointure , non ?
Non, là tu fais... une horreur !

Suis le lien de mon précédent message et apprend à faire les jointures correctement en utilisant l'opérateur JOIN, normalisé depuis 1992.
Code :
1
2
3
4
SELECT LastName + ' ' + FirstName AS [Nom], Job
FROM dbo.Users u
INNER JOIN dbo.EvaluationSheet e ON u.UserID = e.RatedID
WHERE AssessorID = @id
Citation:
En fait j'ai testé comme ça, mais ça ne fonctionne pas :

Code :
1
2
3
4
5
SELECT LastName + ' ' + FirstName AS [Nom], Job 
  FROM dbo.Users , dbo.EvaluationSheet
 WHERE UserID = (SELECT RatedID, Job
                   FROM dbo.EvaluationSheet
                  WHERE AssessorID = @id)
Normal que ça ne fonctionne pas ! Tu compares une colonne (UserID à deux colonnes (RatedID et Job) !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/03/2011, 12h07   #5
Membre à l'essai
 
Homme Felicien
Inscription : février 2011
Messages : 44
Détails du profil
Informations personnelles :
Nom : Homme Felicien
Localisation : Belgique

Informations forums :
Inscription : février 2011
Messages : 44
Points : 23
Points : 23
Oui je voulais dire sans le job... Bien sur ! C'etait juste pour montrer que je voulais récupérer la valeur job mais bien sur que ça ne pouvait pas fonctionner.

j'ai un peu regardé le lien mais ça m'a lair assez complexe... mais j'vais m'attarder la dessus, j'ai un prof sql qui enseigne depuis les années 80 et apparemment , il s'est pas mis à jour -_-'

Merci !
eleve_prog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 12h10   #6
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Pourquoi ne pas faire :
Code :
1
2
3
4
5
6
SELECT LastName + ' ' + FirstName AS [Nom]
  FROM dbo.Users
      INNER JOIN (SELECT RatedID, Job
                   FROM dbo.EvaluationSheet
                  WHERE AssessorID = @id)) lst
         WHERE UserID = LST.RatedID
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/03/2011, 13h29   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par zoom61 Voir le message
Pourquoi ne pas faire :
Code :
1
2
3
4
5
6
SELECT LastName + ' ' + FirstName AS [Nom]
  FROM dbo.Users
      INNER JOIN (SELECT RatedID, Job
                   FROM dbo.EvaluationSheet
                  WHERE AssessorID = @id)) lst
         WHERE UserID = LST.RatedID
Parce que cette requête est une nouvelle horreur !

Encore une fois, apprenez à faire les jointures correctement !

INNER JOIN est obligatoirement suivi de ON pour introduire la condition de jointure.
Et joindre la table à la sous-requête est inutilement coûteux quand il est si simple de joindre directement les deux tables !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/03/2011, 17h54   #8
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Citation:
Envoyé par CinePhil Voir le message
Parce que cette requête est une nouvelle horreur !
Je te trouve un peu léger...... moi j'aurais dit une grosse m...... !
;-)

A +

PS : j'ai l'impression que ce forum régresse de plus en plus...
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 09h13   #9
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
PS : j'ai l'impression que ce forum régresse de plus en plus...
Vous êtes l'un des mieux placé pour le savoir, SQL et la modélisations en générale sont malheureusement les parents pauvres de l'enseignement de nos jours...



Citation:
j'ai un peu regardé le lien mais ça m'a lair assez complexe... mais j'vais m'attarder la dessus, j'ai un prof sql qui enseigne depuis les années 80 et apparemment , il s'est pas mis à jour

encore un prof de math qu'on improvise informaticien?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h53.


 
 
 
 
Partenaires

Hébergement Web