Requete de débutant.

Le
HWO
Bonjour à tous,

Tout nouveau sur SQL Serveur, je peine à écrire ma première requete.
J'utilise SQL SERVER 2008 EXPRESS et Studio Management. J'ai créé un BD
constituée de 2 tables (produits et fournisseurs). La table produit est
constituée de 3 colonnes (ref, fournisseur_1, fournisseur_2, et d'autres) et
la table fournisseur est constituée des coordonnées des différents
fournisseurs.

exemple de table fournisseur (avec idFournisseur comme cle primaire) :
idFounisseur nom
1 toto
2 titi

exemple de table produit (avec idProduit comme cle primaire) :
idProduit ref founisseur_1 fournisseur_2
1 AB 1
2 FR 2 1
3 ER 1 2

Je n'arrive pas à faire vue qui resemblerai à :
ref fournisseur_principal fournisseur_autre
AB toto
FR titi toto
ER toto titi

Tout d'abord, cela est-il possible ?
Soyez indulgent, c'est ma première requete, je faiscertainement une erreur
grosse comme une maison, mais il faut bien commencer.

Par avance merci de votre aide.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
EmanuelL
Le #19270671
Bonjour HWO,

Ci-dessous une solution. A noter que dans cet exemple j'ai utilisé des
tables temporaires (#) et que j'ai ajouté NULL à l'insertion de la 1ère
ligne de la table Produit.

A+ ;-)

-- EXEMPLE ---

USE [MaTAble] ;
GO
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#Fournisseur', N'U') IS NOT NULL
DROP TABLE #Fournisseur ;
GO
IF OBJECT_ID(N'tempdb..#Produit', N'U') IS NOT NULL
DROP TABLE #Produit ;
GO

CREATE TABLE #Fournisseur (IdFounisseur smallint NULL, Nom varchar(10)
NULL)
INSERT INTO #Fournisseur (IdFounisseur, Nom) VALUES (1, 'Toto')
INSERT INTO #Fournisseur (IdFounisseur, Nom) VALUES (2, 'Titi')

CREATE TABLE #Produit (IdProduit smallint NULL, Ref varchar(2) NULL,
Founisseur_1 smallint NULL, Fournisseur_2 smallint NULL)
INSERT INTO #Produit (IdProduit, Ref, Founisseur_1, Fournisseur_2)
VALUES (1, 'AB', 1, NULL)
INSERT INTO #Produit (IdProduit, Ref, Founisseur_1, Fournisseur_2)
VALUES (2, 'FR', 2, 1)
INSERT INTO #Produit (IdProduit, Ref, Founisseur_1, Fournisseur_2)
VALUES (3, 'ER', 1, 2)

SELECT P.ref
,Fournisseur_Principal = (SELECT F.Nom FROM #Fournisseur AS F
WHERE F.idFounisseur = P.Founisseur_1)
,Fournisseur_Autre = (SELECT F.Nom FROM #Fournisseur AS F WHERE
F.idFounisseur = P.Fournisseur_2)
FROM #Produit AS P

Le 05.05.2009, HWO a supposé :
Bonjour à tous,

Tout nouveau sur SQL Serveur, je peine à écrire ma première requete.
J'utilise SQL SERVER 2008 EXPRESS et Studio Management. J'ai créé un BD
constituée de 2 tables (produits et fournisseurs). La table produit est
constituée de 3 colonnes (ref, fournisseur_1, fournisseur_2, et d'autres) et
la table fournisseur est constituée des coordonnées des différents
fournisseurs.

exemple de table fournisseur (avec idFournisseur comme cle primaire) :
idFounisseur nom
1 toto
2 titi

exemple de table produit (avec idProduit comme cle primaire) :
idProduit ref founisseur_1 fournisseur_2
1 AB 1
2 FR 2 1
3 ER 1 2

Je n'arrive pas à faire vue qui resemblerai à :
ref fournisseur_principal fournisseur_autre
AB toto
FR titi toto
ER toto titi

Tout d'abord, cela est-il possible ?
Soyez indulgent, c'est ma première requete, je faiscertainement une erreur
grosse comme une maison, mais il faut bien commencer....

Par avance merci de votre aide.



--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
TedIF
Le #19272421
HWO avait écrit le 05/05/2009 :
Bonjour à tous,

Tout nouveau sur SQL Serveur, je peine à écrire ma première requete.
J'utilise SQL SERVER 2008 EXPRESS et Studio Management. J'ai créé un BD
constituée de 2 tables (produits et fournisseurs). La table produit est
constituée de 3 colonnes (ref, fournisseur_1, fournisseur_2, et d'autres) et
la table fournisseur est constituée des coordonnées des différents
fournisseurs.

exemple de table fournisseur (avec idFournisseur comme cle primaire) :
idFounisseur nom
1 toto
2 titi

exemple de table produit (avec idProduit comme cle primaire) :
idProduit ref founisseur_1 fournisseur_2
1 AB 1
2 FR 2 1
3 ER 1 2

Je n'arrive pas à faire vue qui resemblerai à :
ref fournisseur_principal fournisseur_autre
AB toto
FR titi toto
ER toto titi





select REF, F_principal.nom, F_autre.nom
from produit
left outer join fournisseur F_principal
on F_principal.idfournisseur = produit.fournisseur_1
left outer join fournisseur F_autre
on F_autre.idfournisseur = produit.fournisseur_2

--

Dominique
EmanuelL
Le #19274141
Bonjour,

Je préfère cette solution qu'à la mienne.

select REF, F_principal.nom, F_autre.nom
from produit
left outer join fournisseur F_principal
on F_principal.idfournisseur = produit.fournisseur_1
left outer join fournisseur F_autre
on F_autre.idfournisseur = produit.fournisseur_2



Bravo! ;-)

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
TedIF
Le #19274651
EmanuelL a écrit :
Bonjour,

Je préfère cette solution qu'à la mienne.

select REF, F_principal.nom, F_autre.nom
from produit
left outer join fournisseur F_principal
on F_principal.idfournisseur = produit.fournisseur_1
left outer join fournisseur F_autre
on F_autre.idfournisseur = produit.fournisseur_2



Bravo! ;-)



Merci

--

Dominique
WOLO Laurent
Le #19565881
Commence par étudier la modélisation des bases de données avant de vous
lancer dans l'écriture des requêtes. Votre modélisation n'est pas normale !
"HWO" news:
Bonjour à tous,

Tout nouveau sur SQL Serveur, je peine à écrire ma première requete.
J'utilise SQL SERVER 2008 EXPRESS et Studio Management. J'ai créé un BD
constituée de 2 tables (produits et fournisseurs). La table produit est
constituée de 3 colonnes (ref, fournisseur_1, fournisseur_2, et d'autres)
et la table fournisseur est constituée des coordonnées des différents
fournisseurs.

exemple de table fournisseur (avec idFournisseur comme cle primaire) :
idFounisseur nom
1 toto
2 titi

exemple de table produit (avec idProduit comme cle primaire) :
idProduit ref founisseur_1 fournisseur_2
1 AB 1
2 FR 2 1
3 ER 1 2

Je n'arrive pas à faire vue qui resemblerai à :
ref fournisseur_principal fournisseur_autre
AB toto
FR titi toto
ER toto titi

Tout d'abord, cela est-il possible ?
Soyez indulgent, c'est ma première requete, je faiscertainement une erreur
grosse comme une maison, mais il faut bien commencer....

Par avance merci de votre aide.



Publicité
Poster une réponse
Anonyme