Selezionare più tabelle mantenedole separate

venerdì 18 aprile 2008 - 10.40

paovanm Profilo | Junior Member

Ciao,

sono sempre la solita "principiante" alle prime armi.

Sto lavorando su un database con SQL2000 realtivo a motori di automobili. Ho circa 40 tabelle (una tabella per ogni componente del motore) collegate tutte ad una tabella iniziale di anagrafica. Quando preparo una query di selezione (utilizzando Query analyser) che riunisce tutte le 40 tabelle (selezionado i diversi links in modo da far vedere tutte le righe della tabella anagrafica) mi ritrovo un mega tabellone lunghissimo e con tantissime righe ripetute (oviamente nello stesso motore ci sono componenti con svariate caratteristiche, ripetuti più volte, etc...).

Sarebbe possibile selezionare le tabelle singolarmente (mantenedole separate le une dalle altre come sono nel database) visualizzandole separatamente nel riquadro dei risultati del query analyzer?

Altrimenti avete altri consigli da darmi?

Grazie in anticipo,

Michela

lbenaglia Profilo | Guru

>Quando preparo una query di selezione (utilizzando Query analyser)
>che riunisce tutte le 40 tabelle (selezionado i diversi links
>in modo da far vedere tutte le righe della tabella anagrafica)
>mi ritrovo un mega tabellone lunghissimo e con tantissime righe
>ripetute (oviamente nello stesso motore ci sono componenti con
>svariate caratteristiche, ripetuti più volte, etc...).

Ciao Michela,

come "riunisci" tutte le tabelle?
Utilizzi l'operatore UNION o metti in JOIN le tabelle?

>Sarebbe possibile selezionare le tabelle singolarmente (mantenedole
>separate le une dalle altre come sono nel database) visualizzandole
>separatamente nel riquadro dei risultati del query analyzer?

Ehm, intendi questo?

SELECT * FROM tabella1 SELECT * FROM tabella2 . . . SELECT * FROM tabella40

>Grazie in anticipo,
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paovanm Profilo | Junior Member

Si intendo unire con i joins.

per selezionare intendo:

SELECT dbo.[01_Project/Engine Information].[ID Motore], dbo.[01_Project/Engine Information].[Matricola (SN)], dbo.[01_Project/Engine Information].Distinta,
dbo.[01_Project/Engine Information].Revisione, dbo.[01_Project/Engine Information].[DVP&R],

etc....

FROM dbo.[01_Project/Engine Information] INNER JOIN
dbo.[11_ Colletori] ON dbo.[01_Project/Engine Information].[ID Motore] = dbo.[11_ Colletori].[ID motore] LEFT OUTER JOIN
dbo.[09_Injectors] ON dbo.[01_Project/Engine Information].[ID Motore] = dbo.[09_Injectors].ID_motore LEFT OUTER JOIN
dbo.[04_01_Teste] ON dbo.[01_Project/Engine Information].[ID Motore] = dbo.[04_01_Teste].[ID motore] LEFT OUTER JOIN
dbo.[33_Tubi] ON dbo.[01_Project/Engine Information].[ID Motore] = dbo.[33_Tubi].[ID motore] LEFT OUTER J

etc...


Spero di essere stata più chiara.

Grazie,
Ciao
Michela

lbenaglia Profilo | Guru

>Si intendo unire con i joins.
Eseguendo la JOIN tra due o più tabelle, ottieni 1 nuovo result set che contiene le righe correlate in base alle cononne specificate nella clausola ON.
Essendo un unico result set, non puoi ottenere in Query Analyzer una visualizzazione separata per tabella.

Ad ogni modo, il piano di esecuzione di una query che coinvolge 40 tabelle, sarà probabilmente disastroso
Sei proprio sicura di aver progettato correttamente la base dati (terza forma normale)?

>Grazie,
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paovanm Profilo | Junior Member

sì grazie ad un tuo suggerimento ho riprogettato tutte le tabelle ma ci sono tantissimi componenti di cui tener traccia in un motore.... lo so che è disastroso...

paovanm Profilo | Junior Member

Sono riuscta a selezionare campi da diverse tabelle mantenedole separate:
ho solamente ripetuto i diversi select tutte le volte:
tipo:
Select * from [01_Project/Engine Information] where [ID motore] = '1'
Select * from [02_Assempling/Durability] where [ID motore] = '1'
Select * from [AA_Technical assembling data_Cil 1-6] where [ID motore] = '1'
Select * from [03_00_Block] where [ID motore] = '1'
Select * from [04_01_Teste] where [ID motore] = '1'
Select * from [04_02_Albero a camme] where [ID motore] = '1'
Select * from [04_03_Coperchi punterie] where [ID motore] = '1'
etc....
grazie ancora comunque
Michela
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