Newsgroup: it.comp.lang.visual-basic
Titolo: # SQL JOIN #

Ciao raga,
piccolo problemino. Ho la seguente tabella "Coppie" con questi campi:
ID
IDCliente1
IDCliente2
Ora IDCliente1 e IDCliente2 sono collegati alla tabella "Clienti", se provo
ad esegire la query:
SELECT [Coppie].*,
[Clienti].[Nome] AS [Cliente1],
[Clienti].[Nome] AS [Cliente2],
FROM ([Coppie]
LEFT JOIN [Clienti] ON [Clienti].[ID] = [Coppie].[IDCliente1])
LEFT JOIN [Clienti] ON [Clienti].[ID] = [Coppie].[IDCliente2]
mi vengono visualizzati 2 record anzichč 1 con i due nomi, sulla prima riga
ho il nome del Cliente1 in entrambe le colonne, sulla seconda quello del
Cliente2 sempre su entrambe le colonne.
Chi mi aiuta a uscire da questo corto circuito? ;-)
saluti

 LEFT JOIN [Clienti] AS B ON B.[ID] = [Coppie].[IDCliente2]
Io toglierei anche le parentesi tonde, ma forse con alcuni dbms non si
può...
Ciao
Alberto


Con MSAccess si ;)


metti in alias la tabella clienti che vienere referenziata 2 volte...
SET NOCOUNT ON
CREATE TABLE dbo.[Clienti] (
 Id INT ,
 Nome VARCHAR(10)
 )
CREATE TABLE dbo.[Coppie] (
 IDCliente1 INT ,
 IDCliente2 INT
 )
GO
INSERT INTO dbo.[Clienti] VALUES ( 1 , 'Gianluca' )
INSERT INTO dbo.[Clienti] VALUES ( 2 , 'Lorenzo' )
INSERT INTO dbo.[Clienti] VALUES ( 3 , 'Luca' )
INSERT INTO dbo.[Clienti] VALUES ( 4 , 'Andrea' )
INSERT INTO dbo.[Coppie] VALUES ( 1 , 2 )
INSERT INTO dbo.[Coppie] VALUES ( 1 , 3 )
INSERT INTO dbo.[Coppie] VALUES ( 1 , 4 )
INSERT INTO dbo.[Coppie] VALUES ( 2 , 1 )
INSERT INTO dbo.[Coppie] VALUES ( 2 , 3 )
INSERT INTO dbo.[Coppie] VALUES ( 2 , 4 )
INSERT INTO dbo.[Coppie] VALUES ( 3 , 1 )
INSERT INTO dbo.[Coppie] VALUES ( 3 , 2 )
INSERT INTO dbo.[Coppie] VALUES ( 3 , 4 )
INSERT INTO dbo.[Coppie] VALUES ( 4 , 1 )
INSERT INTO dbo.[Coppie] VALUES ( 4 , 2 )
INSERT INTO dbo.[Coppie] VALUES ( 4 , 3 )
GO
SELECT cp.*,
 c1.[Nome] AS [Cliente1],
 c2.[Nome] AS [Cliente2]
 FROM (dbo.[Coppie] cp
  LEFT JOIN dbo.[Clienti] AS c1 ON c1.[ID] = cp.[IDCliente1])
  LEFT JOIN dbo.[Clienti] AS c2 ON c2.[ID] = cp.[IDCliente2]
GO
DROP TABLE dbo.[Coppie]
DROP TABLE dbo.[Clienti]
--<------------------------
IDCliente1  IDCliente2  Cliente1   Cliente2
----------- ----------- ---------- ---------- 
1           2           Gianluca   Lorenzo
1           3           Gianluca   Luca
1           4           Gianluca   Andrea
2           1           Lorenzo    Gianluca
2           3           Lorenzo    Luca
2           4           Lorenzo    Andrea
3           1           Luca       Gianluca
3           2           Luca       Lorenzo
3           4           Luca       Andrea
4           1           Andrea     Gianluca
4           2           Andrea     Lorenzo
4           3           Andrea     Luca
saluti
-- 
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz/DbaMgr.shtm
 
http://italy.mvps.org
DbaMgr2k ver 0.8.0  -  DbaMgr ver 0.54.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE 2000 a visual
interface)
--------- remove DMO to reply

   LEFT JOIN dbo.[Clienti] AS c2 ON c2.[ID] = cp.[IDCliente2]
Grazie 1000, funzia! ;-)


Intendi che con MSAccess ci vogliono o che si possono togliere?
E la query, funziona come l'ho messa io?
Alberto

 E la query, funziona come l'ho messa io?
Scusa Alb, non ho guardato il codice perchč dagli ">" pensavo fosse la
risposta sul mio messaggio ma il tuo codice funziona benissimo, grazie 1000
anche a te!!
saluti