Нужна помощь с запросом MySQL

0

У меня есть 2 таблицы первая таблица. сотрудник (empid-primary key, empname) например: таблица сотрудников

1 john 

2 martyn 

3 davis 

документы второй таблицы (empid, documentname) например:

1 address.doc 

1 worksheet.doc 

1 salaryslip.doc 

3 address.doc 

у каждого сотрудника есть только одна запись в таблице сотрудников но в таблице документов для каждого сотрудника вставлены ноль или более записей.

Я хочу написать запрос, который дает результат, показанный ниже

empid empname documentflag 
1 john true 
2 martyn null 
3 davis true 

то есть, если в таблице документов есть хотя бы одна запись для сотрудника, тогда установить соответствующий флаг документа будет true. в противном случае установить значение документа как null. есть ли эффективный способ использования объединений. Спасибо заранее

  • 0
    Вы можете попробовать комбинацию UPDATE и IF NOT NULL ...
Теги:

2 ответа

2
Лучший ответ

Вы можете сделать это с помощью LEFT JOIN, чтобы включить таблицу документов, GROUP BY, чтобы вы получали только 1 сотрудника за строку и конструкцию IF() для вывода значений, которые вы хотите для documentflag.

SELECT e.empid, e.empname, IF(d.empid IS NULL, NULL, TRUE) `documentflag`
FROM employee e
LEFT JOIN documents d ON (d.empid = e.empid)
GROUP BY e.empid
  • 0
    Я думаю, что это более быстрый метод. спасибо всем
0
SELECT
    empid, 
    empname,
    documentFlag
FROM employee emp 
LEFT OUTER JOIN 
(SELECT doc.empid, count(doc.empid)as documentFlag
 FROM documents doc Group by empid) X
ON emp.empid = X.empid

Ещё вопросы

Сообщество Overcoder
Наверх
Меню