[SQL] - Dubbio sull'operazione di join

mercoledì 04 novembre 2009 - 11.08

symonx80 Profilo | Junior Member

Ciao,
ho un dubbio che probabilmente per la maggior parte di voi sarà banale.
Supponiamo di avere due tabelle A (idA(pk),val1,val2) e B(idB(pk),idA(fk),valB).
Mi potete dire la differenze se c'è tra le due query seguenti:

select * from A inner join B on A.idA = B.idA where A.val1='xxx' and B.valB='1900'

e

select * from A inner join B on A.idA = B.idA and B.valB='1900' where A.val1='xxx'


Grazie

lbenaglia Profilo | Guru

>Ciao,
>ho un dubbio che probabilmente per la maggior parte di voi sarà
>banale.
>Supponiamo di avere due tabelle A (idA(pk),val1,val2) e B(idB(pk),idA(fk),valB).
>Mi potete dire la differenze se c'è tra le due query seguenti:
>
>select * from A inner join B on A.idA = B.idA where A.val1='xxx'
>and B.valB='1900'
>
>e
>
>select * from A inner join B on A.idA = B.idA and B.valB='1900'
>where A.val1='xxx'

Ciao,

Dai un'occhiata a questi post:
http://community.ugiss.org/blogs/lucazav/archive/2009/05/09/inner-join-condition-vs-where-condition.aspx
http://community.ugiss.org/blogs/lucazav/archive/2009/05/19/outer-join-condition-vs-where-condition.aspx

>Grazie
Prego.

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

symonx80 Profilo | Junior Member

Grazie per i link, ma devo dire che l'operazione di left outer join mi rimane un po' confusa..
esempio

tableA(idA,cap,ind)

tableB(idB,idfkA(fk di A),col)

select * from A left outer join b on idA=idfkA where valore not null

io mi aspetto di avere come risultato una tabella con il numero di righe che ho in A e la colonna 'col' valorizzata per i record presenti in B e con valore null per gli altri.
E' sbagliato?

lbenaglia Profilo | Guru

>E' sbagliato?
Puoi autorisponderti creando le due tabelle, inserendo una manciata di dati ed eseguendo la query

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5