2012-02-10 2 views
0

Привет У меня есть данные в двух таблицах моя первая таблица содержитпроблемы с регистрации запроса

  • имя
  • фамилия

моя вторая таблица содержит

  • идентификатор пользователя
  • имя
  • фамилия

Я пытаюсь написать sql-запрос, чтобы получить идентификатор пользователя определенного пользователя, но при запуске запроса я получаю пустой набор. Может ли кто-нибудь подтвердить, что запрос, который я использую, прав? Мне кажется хорошо

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

Вы уверены, что Firstname и фамилия точно так же в обеих таблицах? Капитализация, конечные (и ведущие) пространства, все эти вещи скрыты gotchas. –

+1

Не используете ли вы ту же таблицу TABLE2. – AnAmuser

+1

Вторая таблица содержит две колонки или три? Определение подразумевает два, в то время как запрос подразумевает три. – apokryfos

ответ

2

Вы используете дважды ту же таблицу (TABLE2), но в описании вы указываете, что у вас есть две таблицы.

+0

извините, я ошибаюсь, на самом деле я имел в виду подбирать users.id FROM TABLE1 AS r LEFT JOIN TABLE2 AS пользователи ON (users.firstname = r.firstname AND users.lastname = r.lastname) – user1202047

+0

как предложено Брайаном Гувером , вы можете попытаться обрезать поля, которые вы используете, в состоянии соединения. –

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

+0

В соответствии с вашими требованиями он должен работать. – Pranav

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

Смежные вопросы