2015-12-07 5 views
0

У меня есть две таблицы cafedetails и employeedetailsОбъединение двух таблиц на том же состоянии, в SQL Server

  • cafedetails имеет столбцы cafemanagerid и staffid
  • employeedetails имеет столбцы EmployeeID, employeename

Я хочу, чтобы получить полная информация

cafemanagerid, name, staffid, name 

Мой запрос:

select 
    cafemanagerid, employeename as cafemanagerName, 
    staffid, employeename as staffname 
from 
    cafedetails, employeedetails 
where 
    cafemanagerid = employeeid 
    and staffid = employeeid 

я знаю, не работает, но как этого добиться?

Помощь мне ..

+4

[Плохие привычки пинать: с помощью старого стиля JOINS] (http://sqlblog.com/blogs/aaron_bertrand/archive /2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - этот старый стиль * разделенный запятыми список таблиц * стиль был заменен на * proper * ANSI 'JOIN' синтаксис в ANSI - ** 92 ** SQL Standard (** более 20 лет ** назад), и его использование не рекомендуется –

ответ

0

Вы должны присоединиться employeedetails дважды, каждый с различными именами псевдонимов. В этом примере я использовал полное внешнее соединение, чтобы показать данные, если они совпадают. Могут появиться нули, другие не существуют.

SELECT 
    cd.cafemanagerid, 
    cafe.employeename AS cafemanagerName, 
    cd.staffid, 
    staf.employeename AS staffname 
FROM 
    cafedetails AS cd 
    FULL OUTER JOIN employeedetails AS cafe ON cd.cafemanagerid = cafe.employeeid 
    FULL OUTER JOIN employeedetails AS staf ON cd.staffid = staf.employeeid 

Если вы хотите строки, где и существуют только затем изменить FULL OUTER JOIN к INNER JOIN

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