2015-06-20 2 views
0

я использовал следующий запрос:Использование Inner Присоединяйтесь тот же результат возвращается несколько раз

OrderMaster стол:

OrderId 
UserId - F.K 

Users стол:

Id - P.K 
Name 
Email 
Mobilenumber 

Запрос:

SELECT 
    CAST(o.Id as varchar(50)) as ID, 
    CAST(o.Name as varchar(50)) as Name, 
    CAST(o.ContactNumber as varchar(50)) as Mobilenumber, 
    o.Email 
FROM 
    ordermaster as t1 
INNER JOIN 
    Users as o ON t1.UserId<> o.Id 

Результаты выглядят так:

Id Name Mobilenumber Email 
------------------------------------------- 
1 xxxx 252548878  [email protected] 
2 yyyy 422557879  [email protected] 
1 xxxx 252548878  [email protected] 
2 yyyy 422557879  [email protected] 

Почему такой же результат возвращен несколько раз? Пожалуйста, уточните меня.

+2

это соединение не имеет смысла пользователям 'как о ON t1.UserId <> o.Id' –

+0

Пожалуйста, скажите нам, что ** типы данных ** для этих столбцов! –

+0

Почему я хочу взять данные из таблицы пользователей, чего нет в таблице Ordermaster. это не правильно? – Duk

ответ

1

Поскольку ваше условие соединения - <> и not =, каждая запись в User объединяется со всеми записями в Ordermaster, у которых есть другой идентификатор, дающий тот же результат несколько раз. Если вы хотите, чтобы все пользователи, которые не находятся в Ordermaster, то вы можете сделать:

SELECT ... 
FROM Users u 
WHERE NOT EXISTS (SELECT * FROM ordermaster WHERE u.Id = Id) 
Смежные вопросы