SQL - query e LEFT JOIN?

martedì 01 aprile 2008 - 14.24

angie81 Profilo | Junior Member

ho una tabella contenente una lista di record..
questa tabella ha correlazioni con altre 2 tabelle..

vorrei una query che mostri solo i record della prima tabella non relazionati con le altre 2 tabelle e con data fine nulla o maggiore di oggi...
ho scritto cosi..

SELECT TAB_A.CODICE, TAB_A.DESCRIZIONE, TAB_B.COD_A, TAB_C.CODICE_A FROM TAB_A LEFT OUTER JOIN TAB_B on TAB_A.CODICE = TAB_B.COD_A LEFT OUTER JOIN TAB_B on TAB_A.CODICE = TAB_C.COD_A where TAB_A.DATA_FINE >= getdate() or TAB_A.DATA_FINE is null

giusto?

lbenaglia Profilo | Guru

>ho scritto cosi..
<snip>
>giusto?
Boh, posta un esempio completo con la struttura delle tabelle (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che vorresti ottenere a partire da quei dati.

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

angie81 Profilo | Junior Member

questi sono i CREATE delle 3 tabelle.. credo si capiscano le relazioni tra le tre..
io vorrei estrapolare dalla prima tabella SOLO i [COD_UNITA_OPERATIVA] non presenti nelle altre due tabelle..

TAB_A

CREATE TABLE [UNITA_OPERATIVA] ( [COD_UNITA_OPERATIVA] [varchar] (20) COLLATE Latin1_General_CI_AS NOT NULL , [DES_BREVE] [varchar] (100) COLLATE Latin1_General_CI_AS NULL ) ON [PRIMARY]

TAB_B

CREATE TABLE [DIPARTIMENTO_UNITA] ( [ID_RELAZIONE] [varchar] (50) COLLATE Latin1_General_CI_AS NOT NULL , [COD_DIPARTIMENTO] [varchar] (50) COLLATE Latin1_General_CI_AS NULL , [COD_UNITA_OPERATIVA] [varchar] (50) COLLATE Latin1_General_CI_AS NULL ) ON [PRIMARY]

TAB_C

CREATE TABLE [SERVIZIO_UNITA] ( [ID_SERVIZIO_UNITA] [int] NOT NULL , [COD_SERVIZIO] [varchar] (20) COLLATE Latin1_General_CI_AS NULL , [COD_UNITA_OPERATIVA] [varchar] (5) COLLATE Latin1_General_CI_AS NULL , ) ON [PRIMARY]


lbenaglia Profilo | Guru

>questi sono i CREATE delle 3 tabelle.. credo si capiscano le
>relazioni tra le tre..
Perché devo "credere"? Non puoi postare anche i constraint FOREIGN KEY?
Inoltre mancano:

1) I comandi di INSERT
2) Il result set che vuoi ottenere con quei dati.

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

angie81 Profilo | Junior Member

grazie .. ma nel frattempo.. ho risolto così

SELECT UNITA_OPERATIVA.COD_UNITA_OPERATIVA, UNITA_OPERATIVA.DES_UNITA_OPERATIVA FROM UNITA_OPERATIVA WHERE UNITA_OPERATIVA.DAT_FINE >= getdate() or UNITA_OPERATIVA.DAT_FINE is null and NOT EXISTS (SELECT * FROM DIPARTIMENTO_UNITA where UNITA_OPERATIVA.COD_UNITA_OPERATIVA = DIPARTIMENTO_UNITA.COD_UNITA_OPERATIVA) and NOT EXISTS (SELECT * FROM SERVIZIO_UNITA where UNITA_OPERATIVA.COD_UNITA_OPERATIVA = SERVIZIO_UNITA.COD_UNITA_OPERATIVA)
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5