2012-02-10 57 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