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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| CREATE TABLE TbClient
(
IDClient INT IDENTITY NOT NULL CONSTRAINT PK_TbClient PRIMARY KEY,
NomClient VARCHAR(20) NOT NULL,
DateCreation DATETIME NOT NULL CONSTRAINT DF_TbClient_DateCreation DEFAULT GETDATE()
)
GO
CREATE TABLE TbTypeNumeroTelephone
(
IDTypeNumeroTelephone TINYINT IDENTITY NOT NULL CONSTRAINT PK_TbTypeNumeroTelephone PRIMARY KEY,
NomTypeNumeroTelephone VARCHAR(13) NOT NULL
)
GO
CREATE TABLE TbTelephone
(
IDTelephone INT IDENTITY NOT NULL CONSTRAINT PK_TbTelephone PRIMARY KEY,
IDClient INT NOT NULL CONSTRAINT FK_TbTelephone_IDClient FOREIGN KEY (IDClient) REFERENCES dbo.TbClient (IDClient),
Numero VARCHAR(20) NOT NULL CONSTRAINT CHK_TbTelephone_Numero CHECK (Numero LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
IDTypeNumeroTelephone TINYINT CONSTRAINT FK_TbTelephone_IDTypeNumero FOREIGN KEY (IDTypeNumeroTelephone) REFERENCES dbo.TbTypeNumeroTelephone (IDTypeNumeroTelephone),
CONSTRAINT UQ_TbTelephone_IDClient_IDTypeNumeroTelephone UNIQUE (IDClient, IDTypeNumeroTelephone)
)
GO
INSERT INTO dbo.TbClient (NomClient) VALUES ('Patic')
INSERT INTO dbo.TbClient (NomClient) VALUES ('ElSuket')
GO
INSERT INTO dbo.TbTypeNumeroTelephone (NomTypeNumeroTelephone) VALUES ('Professionnel')
INSERT INTO dbo.TbTypeNumeroTelephone (NomTypeNumeroTelephone) VALUES ('Mobile')
INSERT INTO dbo.TbTypeNumeroTelephone (NomTypeNumeroTelephone) VALUES ('Personnel')
INSERT INTO dbo.TbTypeNumeroTelephone (NomTypeNumeroTelephone) VALUES ('Fax')
GO
INSERT INTO dbo.TbTelephone VALUES (1, '0100000000', 1)
INSERT INTO dbo.TbTelephone VALUES (2, '0111111111', 1)
INSERT INTO dbo.TbTelephone VALUES (1, '0622222222', 2)
INSERT INTO dbo.TbTelephone VALUES (2, '0633333333', 2)
GO
CREATE VIEW VTelephoneProfessionnelClient
AS
SELECT CLI.NomClient,
TEL.Numero
FROM dbo.TbClient CLI
JOIN dbo.TbTelephone TEL ON TEL.IDClient = CLI.IDClient
JOIN dbo.TbTypeNumeroTelephone TYPE_TEL ON TYPE_TEL.IDTypeNumeroTelephone = TEL.IDTypeNumeroTelephone
WHERE TYPE_TEL.NomTypeNumeroTelephone = 'Professionnel'
GO
DECLARE @SQL VARCHAR(255),
@TypeTel VARCHAR(13),
@AliasClient VARCHAR(13)
SELECT @TypeTel = 'Professionnel',
@AliasClient = 'Nom du client'
SET @SQL = 'SELECT NomClient AS [' + @AliasClient + '], Numero AS [N° de téléphone ' + @TypeTel + '] FROM dbo.VTelephoneProfessionnelClient'
-- PRINT @SQL
EXEC (@SQL)
-- Ou encore
CREATE PROCEDURE usp_Telephone
@_TypeTel VARCHAR(13),
@_AliasClient VARCHAR(13)
AS
BEGIN
DECLARE @SQL VARCHAR(255)
SET @SQL = 'SELECT NomClient AS [' + @_AliasClient + '], Numero AS [N° de téléphone ' + @_TypeTel + ']' +
' FROM dbo.VTelephoneProfessionnelClient'
-- PRINT @SQL
EXEC (@SQL)
END
EXEC dbo.usp_Telephone 'Professionnel', 'Nom du client' |
Partager