2012-02-10 63 views
0

您好我已經得到了我的數據表頭中包含問題聯合查詢兩個表

  • 名字
  • 姓氏

我的第二個表包含

  • 用戶ID
  • 名字
  • 姓氏

我想寫一個SQL查詢來獲取特定用戶的用戶標識,但我在執行查詢時得到了空集。任何人都可以請驗證我使用的查詢是正確的嗎?這對我來說似乎沒問題

select users.id 
FROM TABLE1 AS r 
    LEFT JOIN TABLE2 AS users 
    ON (users.firstname = r.firstname 
    AND users.lastname=r.lastname) 
+0

你確定名字和姓氏是完全兩個表中的一樣嗎?大寫,尾隨(和領先)空格,所有這些都是隱藏的陷阱。 – 2012-02-10 12:43:05

+1

你不使用同一個表TABLE2。 – AnAmuser 2012-02-10 12:46:50

+1

是包含兩列還是三列的第二張表格?該定義意味着兩個,而查詢意味着三個。 – apokryfos 2012-02-10 15:03:52

回答

2

您使用兩次相同的表(TABLE2),但在說明中您聲明您有兩個表。

+0

對不起,我的意思是選擇users.id FROM TABLE1 AS r LEFT JOIN TABLE2 AS users ON(users.firstname = r.firstname AND users.lastname = r.lastname) – user1202047 2012-02-10 12:48:53

+0

由Brian Hoover提出,您可以嘗試修剪您在連接條件中使用的字段。 – 2012-02-10 12:54:59

1

我不知道,但我想你想的:

select users.id 
     FROM TABLE1 AS r 
    INNER JOIN TABLE2 AS users 
     ON (users.firstname = r.firstname AND users.lastname=r.lastname) 
+0

這似乎並不工作 – user1202047 2012-02-10 12:52:12

+0

根據您的規範它應該工作。 – Pranav 2012-02-10 12:55:43

0
select users.id 
     FROM TABLE1 AS r 
    INNER JOIN TABLE2 AS users 
     ON (lower(ltrim(rtrim(users.firstname))) = lower(ltrim(rtrim(r.firstname))) AND lower(ltrim(rtrim(users.lastname)))=lower(ltrim(rtrim(r.lastname)))) 
+0

你有第一個名字和第二個表中的姓氏單列嗎? – Vikram 2012-02-10 12:57:47