Creazione vista

mercoledì 18 maggio 2016 - 18.14
Tag Elenco Tags  SQL Server 2008 R2

fotw Profilo | Newbie

Un saluto a tutti,

dovrei creare una vista come da esempio,
dopo vari tentativi mi sono arreso ed ho chiesto aiuto.

Un grazie in anticipo a tutti
gilberto


Esempio Scripts
=============
CREATE TABLE Articoli (
Art_Cod CHAR (025) COLLATE Database_Default NOT NULL,
Art_Descrizione VARCHAR (256) COLLATE Database_Default NULL,
CONSTRAINT PK_Articoli PRIMARY KEY CLUSTERED
(Art_Cod ASC) WITH FILLFACTOR = 85 ON [PRIMARY]) ON [PRIMARY]

CREATE TABLE Prezzi (
Px_CodArt CHAR (025) COLLATE Database_Default NOT NULL,
Px_CodFor INT NOT NULL,
Px_Prezzo DECIMAL (12,6) NULL,
CONSTRAINT PK_Prezzi PRIMARY KEY CLUSTERED
(Px_CodArt ASC, Px_CodFor ASC) WITH FILLFACTOR = 85 ON [PRIMARY]) ON [PRIMARY]

CREATE TABLE ArtFornit (
ArFo_CodArt CHAR (025) COLLATE Database_Default NOT NULL,
ArFo_CodFor INT NOT NULL,
ArFo_CodArtForn CHAR (032) COLLATE Database_Default NOT NULL,
ArFo_DescrArt VARCHAR (256) COLLATE Database_Default NULL,
CONSTRAINT PK_ArtFornit PRIMARY KEY CLUSTERED
(ArFo_CodArt ASC, ArFo_CodFor ASC) WITH FILLFACTOR = 85 ON [PRIMARY]) ON [PRIMARY]

-- INSERT Articoli
INSERT INTO Articoli VALUES ('ART1', 'Descrizione Articolo 1')
INSERT INTO Articoli VALUES ('ART2', 'Descrizione Articolo 2')
INSERT INTO Articoli VALUES ('ART3', 'Descrizione Articolo 3')
INSERT INTO Articoli VALUES ('ART4', 'Descrizione Articolo 4')
INSERT INTO Articoli VALUES ('ART5', 'Descrizione Articolo 5')

-- INSERT Prezzi per fornitori
INSERT INTO Prezzi VALUES ('ART1', 1, 1.00)
INSERT INTO Prezzi VALUES ('ART1', 2, 1.10)
INSERT INTO Prezzi VALUES ('ART1', 3, 1.15)
INSERT INTO Prezzi VALUES ('ART3', 1, 2.00)
INSERT INTO Prezzi VALUES ('ART3', 3, 2.15)

-- INSERT Codice Articolo fornitori
INSERT INTO ArtFornit VALUES ('ART1', 1, 'F1-ART1', 'Descrizione F1-ART1')
INSERT INTO ArtFornit VALUES ('ART1', 4, 'F4-ART1', 'Descrizione F4-ART1')
INSERT INTO ArtFornit VALUES ('ART2', 1, 'F1-ART2', 'Descrizione F1-ART2')
INSERT INTO ArtFornit VALUES ('ART3', 3, 'F3-ART3', 'Descrizione F3-ART3')

SELECT * FROM Articoli
SELECT * FROM Prezzi
SELECT * FROM ArtFornit


/*
Risultato che vorrei è il seguente
Art_Cod Art_Descrizione Px_CodArt Px_CodFor Px_Prezzo ArFo_CodArt ArFo_CodFor ArFo_CodArtForn ArFo_DescrArt
---------------------------------------------------------------------------------------------------------------------------------------------
ART1 Descrizione Articolo 1 ART1 1 1.00 ART1 1 F1-ART1 Descrizione F1-ART1
ART1 Descrizione Articolo 1 ART1 2 1.10 NULL NULL NULL NULL
ART1 Descrizione Articolo 1 ART1 3 1.15 NULL NULL NULL NULL
ART1 Descrizione Articolo 1 NULL NULL NULL ART1 4 F4-ART1 Descrizione F4-ART1
ART2 Descrizione Articolo 2 NULL NULL NULL ART2 1 F1-ART2 Descrizione F1-ART2
ART3 Descrizione Articolo 3 ART3 1 2.00 NULL NULL NULL NULL
ART3 Descrizione Articolo 3 ART3 3 3.15 ART3 3 F3-ART3 Descrizione F3-ART3
ART4 Descrizione Articolo 4 NULL NULL NULL NULL NULL NULL NULL
ART5 Descrizione Articolo 5 NULL NULL NULL NULL NULL NULL NULL

Una riga per articolo e per listino di acqusito e/o articolo fornitore
Chiaramente l'esempio è semplifcato al massimo, le tabelle prezzi e articoli fornitori sul campo sono due viste di tabelle più complesse
(vedi le date di validità sui prezzi di acquisto per fornitore)
*/

DROP TABLE ArtFornit
DROP TABLE Prezzi
DROP TABLE Articoli

renarig Profilo | Expert

Sembra di arrampicarsi sui vetri ...... :)

Innanzitutto direi che manca la Tabella dei Fornitori,
io nell' esempio sotto la ho ricreata con una UNION QUERY
dalle tabelle Prezzi e da ArtFornit
ma sarebbe certamente meglio partire dalla tabella .......

certamente è da riguardare e migliorare,
poi le 5 viste sotto si potranno addensare in una unica nidificata
oppure in una Stored

ma fra poco devo andare ..... quindi per chiudere
non ho neanche il tempo di stare qui ad indentare le viste

Una vista di nome V01Fo
SELECT DISTINCT Fornx FROM ( SELECT ArFo_CodFor AS Fornx FROM dbo.ArtFornit UNION ALL SELECT Px_CodFor AS Fornx FROM dbo.Prezzi ) AS VFornx

Una vista di nome V04ArFo
SELECT dbo.Articoli.Art_Cod, dbo.V01Fo.Fornx, dbo.Articoli.Art_Descrizione FROM dbo.Articoli CROSS JOIN dbo.V01Fo

Una vista di nome V10
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Una vista di nome V14
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Una vista di nome V17
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Facci sapere





fotw Profilo | Newbie

Ciao Renarig,

come scritto nelle note, era un esempio esemplificativo della necessità che ho,
io non devo progettare le tabelle, distribuisco (o meglio l'azienda per cui lavoro distribuisce) un software realizzato da uan azienda nazionale
dove le tabelle sono già presenti tra cui anche quella dei fornitori.

Comunque appena riesco ad avere un pò di tempo applico le tue indicazioni e vi faccio sapere l'esito.
Per ora grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5