2010-07-12 11 views
8

Ho il seguente SQL e genera l'errore colonna di nome ambiguo 'id'ambiguo nome di colonna

select tbl_registration.*, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id 
from tbl_registration 
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id 
left outer join tbl_users on tbl_registration.email = tbl_users.username 
where id = [PARAM]p_id 

Ho letto alcuni articoli su questo, ma non riesco a trovare una soluzione di lavoro per il mio codice. Qualsiasi aiuto molto apprezzato.

risposta

21

tuo clausola WHERE id ha bisogno di essere più specifico, includono il nome della tabella:

WHERE table.id = [PARAM]p_id 

Se due cose condividono lo stesso nome, questo è dove i passaggi ambiguità in questo caso più tabelle in SQL. contenere la colonna "id".

SQL ha l'intelligenza di distinguere i nomi delle colonne se il nome della colonna è univoco attraverso il set corrente di tabelle che vengono toccate, quindi il più delle volte non è necessario prefisso i nomi delle colonne con i nomi delle tabelle.

+2

Personalmente preferisco per specificare sempre quale tabella il campo è venuto da. Ciò rende la manutenzione molto più semplice soprattutto quando si tratta di query di tipo di report complesse che si uniscono a dieci tabelle differenti. In questo modo so da dove viene il campo se è quello che mi sta dando un problema senza dover cercare la struttura di dieci tabelle diverse per scoprire da dove proviene. – HLGEM

6

molto probabilmente più di una tabella ha una colonna denominata id; utilizzare un prefisso tabella nella clausola where

4

Hai provato a prefisso il nome della colonna id nella clausola where?

2

Si riferisce a "id" nella clausola where. Devi specificare quale "id" della tabella deve filtrare.

0

ho sostituito il codice

select *, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id 
from tbl_registration 
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id 
left outer join tbl_users on tbl_registration.email = tbl_users.username 
where your_respective_tblname.id = your_respective_tblname.[PARAM]p_id 
Problemi correlati