Query con JOIN Annidate

lunedì 11 maggio 2009 - 22.55

luxsor Profilo | Guru

Ciao,
ho il seguente problema:

Ho 5 tabelle (TABELLA1, TABELLA2, TABELLA3, TABELLA4, TABELLA5)
La TABELLA1 è quella principale, dove sono poi collegate tutte le altre tabella.

Il mio problema è come posso tramite delle JOIN estrarre tutti i dati delle varie tabelle per poi filtrarmele tramite una WHERE?
Ho provato così ma non funziona:

SELECT tutti i campi delle tabelle FROM Tabella1 INNER JOIN Tabella2 ON Tabella1.ID=Tabella2.ID INNER JOIN Tabella3 ON Tabella1.ID=Tabella3.ID INNER JOIN Tabella4 ON Tabella1.ID=Tabella4.ID INNER JOIN Tabella5 ON Tabella1.ID=Tabella5.ID

Ma non funziona.

Consigli?


------------------------
Luxsor

Jeremy Profilo | Guru

Ciao Carmelo.
Non vorrei farla troppo semplice, ma penso che sia solo un problema di parentesi.
Del Tipo:

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

Se va bene, ti spiego come ho fatto.
Facci sapere...
Ciao.

luxsor Profilo | Guru

Ciao Tiziano,
purtroppo ho già provato così, ma niente.

Altre soluzioni?



------------------------
Luxsor

lbenaglia Profilo | Guru

>Consigli?
Che DBMS utilizzi?
Posta un esempio completo (CREATE TABLE, INSERT INTO e result set desiderato con quei dati) e vedremo di darti una mano.

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

luxsor Profilo | Guru

Queste sono le tabelle:

USE [ConsorzioApuliaCar]
GO
/****** Oggetto: Table [dbo].[moduli] Data script: 05/12/2009 00:11:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[moduli](
[idmodulo] [int] IDENTITY(1,1) NOT NULL,
[idcarrozziere] [int] NULL,
[dataincidente] [datetime] NULL,
[oraincidente] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL,
[luogoincidente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[via] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[numero] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL,
[chkferiti] [bit] NULL,
[chkdanni] [bit] NULL,
[chkoggettidiversi] [bit] NULL,
[indennizzo] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[veicoloragione] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[dataconvenzione] [datetime] NULL,
[luogoconvenzione] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[testimoni] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL,
[interventoautorita] [bit] NULL,
[autoritacc] [bit] NULL,
[autoritaps] [bit] NULL,
[autoritavvuu] [bit] NULL,
[dati1] [bit] NULL,
[dati2] [bit] NULL,
[dati3] [bit] NULL,
[idlegale] [int] NULL,
[idsinistroveicoloa] [int] NULL,
[idsinistroveicolob] [int] NULL,
[idinfo1veicoloa] [int] NULL,
[idinfo1veicolob] [int] NULL,
[idinfo2veicoloa] [int] NULL,
[idinfo2veicolob] [int] NULL,
CONSTRAINT [PK_moduli] PRIMARY KEY CLUSTERED
(
[idmodulo] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

USE [ConsorzioApuliaCar]
GO
/****** Oggetto: Table [dbo].[info1] Data script: 05/12/2009 00:13:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[info1](
[idinfo1] [int] IDENTITY(1,1) NOT NULL,
[cognometestimone1] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[nometestimone1] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[codfiscatestimone1] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[telefonotestimone1] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzotestimone1] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[cognometestimone2] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[nometestimone2] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[codfiscatestimone2] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[telefonotestimone2] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzotestimone2] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[cognomenomeproprietario] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzoproprietario] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[capproprietario] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[provinciaproprietario] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[luogonascitaproprietario] [nvarchar](200) COLLATE Latin1_General_CI_AS NULL,
[codfiscaproprietario] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[f1c1] [bit] NULL,
[f1c2] [bit] NULL,
[f1c3] [bit] NULL,
[cognomenomeferito1] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzoferito1] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[luogonascitaferito1] [nvarchar](200) COLLATE Latin1_General_CI_AS NULL,
[codfiscaferito1] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[ricoveroferito1] [bit] NULL,
[nomeprontosoccorsoferito1] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[comuneferito1] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[f2c1] [bit] NULL,
[f2c2] [bit] NULL,
[f2c3] [bit] NULL,
[cognomenomeferito2] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzoferito2] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[luogonascitaferito2] [nvarchar](200) COLLATE Latin1_General_CI_AS NULL,
[codfiscaferito2] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[ricoveroferito2] [bit] NULL,
[nomeprontosoccorsoferito2] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[comuneferito2] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[note] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_info1] PRIMARY KEY CLUSTERED
(
[idinfo1] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

USE [ConsorzioApuliaCar]
GO
/****** Oggetto: Table [dbo].[info2] Data script: 05/12/2009 00:13:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[info2](
[idinfo2] [int] IDENTITY(1,1) NOT NULL,
[dati1] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati2] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati3] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati4] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati5] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati6] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati7] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati8] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati9] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati10] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati11] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati12] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati13] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati14] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati15] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati16] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
[dati17] [nchar](10) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_info2] PRIMARY KEY CLUSTERED
(
[idinfo2] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

USE [ConsorzioApuliaCar]
GO
/****** Oggetto: Table [dbo].[datisinistro] Data script: 05/12/2009 00:14:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[datisinistro](
[id] [int] IDENTITY(1,1) NOT NULL,
[cognomecontraente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[nomecontraente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[cittacontraente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzocontraente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[numerocontraente] [nvarchar](10) COLLATE Latin1_General_CI_AS NULL,
[capcontraente] [nvarchar](10) COLLATE Latin1_General_CI_AS NULL,
[telefonocontraente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[codfiscacontraente] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[natoacontraente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[datanascitacontraente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[statocontraente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[societa] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[proprietario] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[rappresentante] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[denominazione] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[numeropolizza] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[numerocarta] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[validadal] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[validaal] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[agenzia] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[indirizzoagenzia] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[statoagenzia] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[telefonoagenzia] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[chkpolizza] [bit] NULL,
[cognomeconducente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[nomeconducente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[datanascitaconducente] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[codfiscaconducente] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[cittaconducente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[indirizzoconducente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[numeroconducente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[statoconducente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[telefonoconducente] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[patenteconducente] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[categoriapatente] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[validitapatente] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[vmmarca] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[vmtarga] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[vmstato] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[vrmarca] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[vrstato] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[d1] [bit] NULL,
[d2] [bit] NULL,
[d3] [bit] NULL,
[d4] [bit] NULL,
[d5] [bit] NULL,
[d6] [bit] NULL,
[d7] [bit] NULL,
[d8] [bit] NULL,
[d9] [bit] NULL,
[d10] [bit] NULL,
[d11] [bit] NULL,
[d12] [bit] NULL,
[d13] [bit] NULL,
[d14] [bit] NULL,
[d15] [bit] NULL,
[d16] [bit] NULL,
[d17] [bit] NULL,
[d18] [bit] NULL,
[d19] [bit] NULL,
[d20] [bit] NULL,
CONSTRAINT [PK_datisinistro] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

USE [ConsorzioApuliaCar]
GO
/****** Oggetto: Table [dbo].[legali] Data script: 05/12/2009 00:14:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[legali](
[idlegale] [int] IDENTITY(1,1) NOT NULL,
[cognome] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[nome] [nvarchar](80) COLLATE Latin1_General_CI_AS NULL,
[via] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[numero] [nvarchar](10) COLLATE Latin1_General_CI_AS NULL,
[citta] [nvarchar](80) COLLATE Latin1_General_CI_AS NULL,
[pr] [nvarchar](5) COLLATE Latin1_General_CI_AS NULL,
[cap] [nvarchar](8) COLLATE Latin1_General_CI_AS NULL,
[telefono] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_legali] PRIMARY KEY CLUSTERED
(
[idlegale] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

USE [ConsorzioApuliaCar]
GO
/****** Oggetto: Table [dbo].[carrozzieri] Data script: 05/12/2009 00:14:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[carrozzieri](
[idcarrozziere] [int] IDENTITY(1,1) NOT NULL,
[cognome] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[nome] [nvarchar](80) COLLATE Latin1_General_CI_AS NULL,
[via] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[numero] [nvarchar](10) COLLATE Latin1_General_CI_AS NULL,
[citta] [nvarchar](80) COLLATE Latin1_General_CI_AS NULL,
[pr] [nvarchar](5) COLLATE Latin1_General_CI_AS NULL,
[cap] [nvarchar](8) COLLATE Latin1_General_CI_AS NULL,
[telefono] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[piva] [nvarchar](20) COLLATE Latin1_General_CI_AS NULL,
[carrozzeria] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_carrozzieri] PRIMARY KEY CLUSTERED
(
[idcarrozziere] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Voglio fare in modo di prendere tutti i dati delle varie tabelle con un select e filtrare i dati che mi interessano con una where.




------------------------
Luxsor

luxsor Profilo | Guru

Scusa, mi sono dimenticato le INSERT
INSERT INTO [ConsorzioApuliaCar].[dbo].[moduli]
([idcarrozziere]
,[dataincidente]
,[oraincidente]
,[luogoincidente]
,[via]
,[numero]
,[chkferiti]
,[chkdanni]
,[chkoggettidiversi]
,[indennizzo]
,[veicoloragione]
,[dataconvenzione]
,[luogoconvenzione]
,[testimoni]
,[interventoautorita]
,[autoritacc]
,[autoritaps]
,[autoritavvuu]
,[dati1]
,[dati2]
,[dati3]
,[idlegale]
,[idsinistroveicoloa]
,[idsinistroveicolob]
,[idinfo1veicoloa]
,[idinfo1veicolob]
,[idinfo2veicoloa]
,[idinfo2veicolob])
VALUES
(1
,'05/05/2009'
,'10:00'
,'Milano'
,'corso vittorio'
,'1'
,0
,0
,0
,'DIRETTO'
,'VEICOLO A'
,'12/05/2009'
,'Milano'
,'xxxx'
,1
,1
,1
,1
,1
,0
,0
,1
,1
,2
,1
,2
,1
,2)

INSERT INTO [ConsorzioApuliaCar].[dbo].[datisinistro]
([cognomecontraente]
,[nomecontraente]
,[cittacontraente]
,[indirizzocontraente]
,[numerocontraente]
,[capcontraente]
,[telefonocontraente]
,[codfiscacontraente]
,[natoacontraente]
,[datanascitacontraente]
,[statocontraente]
,[societa]
,[proprietario]
,[rappresentante]
,[denominazione]
,[numeropolizza]
,[numerocarta]
,[validadal]
,[validaal]
,[agenzia]
,[indirizzoagenzia]
,[statoagenzia]
,[telefonoagenzia]
,[chkpolizza]
,[cognomeconducente]
,[nomeconducente]
,[datanascitaconducente]
,[codfiscaconducente]
,[cittaconducente]
,[indirizzoconducente]
,[numeroconducente]
,[statoconducente]
,[telefonoconducente]
,[patenteconducente]
,[categoriapatente]
,[validitapatente]
,[vmmarca]
,[vmtarga]
,[vmstato]
,[vrmarca]
,[vrstato]
,[d1]
,[d2]
,[d3]
,[d4]
,[d5]
,[d6]
,[d7]
,[d8]
,[d9]
,[d10]
,[d11]
,[d12]
,[d13]
,[d14]
,[d15]
,[d16]
,[d17]
,[d18]
,[d19]
,[d20])
VALUES
('Cognome1'
,'Nome1'
,'Città1'
,'Indirizzo1'
,''
,''
,''
,''
,'Milano'
,'14/05/1974'
,'Italia'
,''
,''
,''
,'Sara Assicurazioni'
,'123456789'
,''
,''
,''
,'Sara Milano Assicurazioni'
,''
,''
,''
,0
,'CognomeConducente'
,''
,''
,''
,''
,''
,''
,''
,''
,'B'
,''
,''
,'CM-154-KR'
,''
,''
,''
,''
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,1
,0
INSERT INTO [ConsorzioApuliaCar].[dbo].[datisinistro]
([cognomecontraente]
,[nomecontraente]
,[cittacontraente]
,[indirizzocontraente]
,[numerocontraente]
,[capcontraente]
,[telefonocontraente]
,[codfiscacontraente]
,[natoacontraente]
,[datanascitacontraente]
,[statocontraente]
,[societa]
,[proprietario]
,[rappresentante]
,[denominazione]
,[numeropolizza]
,[numerocarta]
,[validadal]
,[validaal]
,[agenzia]
,[indirizzoagenzia]
,[statoagenzia]
,[telefonoagenzia]
,[chkpolizza]
,[cognomeconducente]
,[nomeconducente]
,[datanascitaconducente]
,[codfiscaconducente]
,[cittaconducente]
,[indirizzoconducente]
,[numeroconducente]
,[statoconducente]
,[telefonoconducente]
,[patenteconducente]
,[categoriapatente]
,[validitapatente]
,[vmmarca]
,[vmtarga]
,[vmstato]
,[vrmarca]
,[vrstato]
,[d1]
,[d2]
,[d3]
,[d4]
,[d5]
,[d6]
,[d7]
,[d8]
,[d9]
,[d10]
,[d11]
,[d12]
,[d13]
,[d14]
,[d15]
,[d16]
,[d17]
,[d18]
,[d19]
,[d20])
VALUES
('Cognome2'
,'Nome2'
,'Città2'
,'Indirizzo2'
,''
,''
,''
,''
,'Roma'
,'14/05/1975'
,'Italia'
,''
,''
,''
,'Sara Assicurazioni'
,'123456789'
,''
,''
,''
,'LLOYD Milano Assicurazioni'
,''
,''
,''
,0
,'CognomeConducente'
,''
,''
,''
,''
,''
,''
,''
,''
,'B'
,''
,''
,'CT-457-RR'
,''
,''
,''
,''
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,1
,0



------------------------
Luxsor

lbenaglia Profilo | Guru

>Voglio fare in modo di prendere tutti i dati delle varie tabelle
>con un select e filtrare i dati che mi interessano con una where.

Le INSERT che hai postato si riferiscono solo ad alcune delle tabelle postate.
Inoltre manca il result set finale che vuoi ottenere con quei dati.

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

luxsor Profilo | Guru

>Le INSERT che hai postato si riferiscono solo ad alcune delle
>tabelle postate.
Si, perchè queste sono le più usate.

>Inoltre manca il result set finale che vuoi ottenere con quei
>dati.
Il ResultSet che voglio ottenere è una serie di join annidate, che mi estraggono tutti i campi delle singole tabelle:

la tabella principale e MODULI dove sono poi collegate tutte le altre, quindi il mio resultset dovrebbe essere i campi nella tabella MODULI + tutti i campi delle tabelle correlate (DATISINISTRO, INFO1, INFO2, LEGALI, CARROZZIERI)

Spero di essere stato chiaro, altrimenti fammi sapere


------------------------
Luxsor
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