2013-07-08 38 views
0
  • 我有一個表VOUCHER,用ID,USER_ID,APPROVED_ID ...SQL選擇多個refences到同一個表

  • USER_ID和APPROVED_ID是引用相同的密鑰 「ID」 的另一個表用戶索引

  • 用戶具有ID,姓名,SECLEVEL ...

  • 有些用戶認可和一些用戶做憑證,如果我想打印優惠券的ID,用戶名和審批的用戶名。我怎樣才能使用SELECT來引用用戶不同的值?我與

    SELECT VOUCHER.ID,VOUCHER.DESCRIPCION,USER.NAME AS NORMALUSER,USER.NAME AS APPROVINGUSER FROM VOUCHER JOIN USER ON VOUCHER.USER_ID=NORMALUSER

嘗試,但我不知道如何在我的代碼獲得審批的用戶名。我希望我解釋myselft以及

+0

'選擇VOUCHER.ID,VOUCHER.DESCRIPCION,USER.NAME AS NORMALUSER,USER.NAME AS APPROVINGUSER FROM VOUCHER加入用戶你在VOUCHER.USER_ID = u.NORMALUSER加入用戶一個ON VOUCHER.USER_ID = a.NORMALUSE'你可以別名表並加入它兩次 – KeepCalmAndCarryOn

+0

由於答案(s)會說,你需要兩個聯接,你有一。當卡住時,如果您花時間草擬模型,包括關係,那麼當您缺少JOIN時,它將更加明顯。鉛筆和紙張被低估的問題解決工具。 –

+0

我正在瘋狂的這個小東西,謝謝你們 – aXul

回答

4

只需添加USER表再次使用另一個加盟

SELECT 
    VOUCHER.ID, 
    VOUCHER.DESCRIPCION, 
    U1.NAME AS NORMALUSER, 
    U2.NAME AS APPROVINGUSER 
FROM VOUCHER 
JOIN USER U1 ON VOUCHER.USER_ID=U1.NORMALUSER 
JOIN USER U2 ON VOUCHER.USER_ID=U2.APPROVINGUSER 
+0

只有一件事情,請大家指正.. 加盟的U1 ON VOUCHER.USER_ID = U1.NORMALUSER 加盟的U2 ON VOUCHER.USER_ID = U2.APPROVINGUSER USER_ID應不與NORMALUSER進行比較,因爲NORMALUSER不是一個ID,它是一個名稱(應該是VOUCHER.USER_ID = U1.ID) – aXul

+0

我現在注意到它不會過濾普通用戶的結果,我的意思是我只想顯示由1個用戶製作的代金券,我目前正在處理它,但是如果你可以提供幫助,那將會很棒 – aXul

+0

@aXul如果你還有其他問題,那麼可能需要提出另一個問題 –