Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete de débutant.

5 réponses
Avatar
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.

5 réponses

Avatar
EmanuelL
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
Avatar
TedIF
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
Avatar
EmanuelL
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
Avatar
TedIF
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
Avatar
WOLO Laurent
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" a écrit dans le message de
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.