Il problema, come detto, è che si sta selezionando PEiD da due tabelle, la soluzione è quella di specificare quali PEiD vuoi, per esempio
SELECT tb.*
FROM (
SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
) AS tb;
A parte questo, come Chris Lively sottolinea abilmente in un commento il SELECT esterno è del tutto superfluo. Quanto segue è totalmente equivalente al primo.
SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
o anche
SELECT *
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
ma per favore evitano il ricorso ad SELECT * quando possibile. Potrebbe funzionare mentre si stanno facendo interrogazioni interattive per risparmiare la digitazione, ma nel codice di produzione non usarlo mai.
fonte
2009-06-29 14:29:43
Solo per curiosità, perché avete l'esterno "selezionare tb. *"? – NotMe