SQL-запрос для получения данных из двух связанных таблиц - PullRequest
3 голосов
/ 22 июля 2011

У меня есть две таблицы, сотрудник и инвентарь. Один сотрудник может иметь ноль или более запасов. Я хотел бы перечислить информацию о сотрудниках вместе с не более чем одной информацией инвентаря а инвентаризация принадлежит одному работнику.

таблица сотрудников

emp_num  last_name  first_name
-----------------------------------
100      john       smith

101      mike       pet

102      jes        lyoid

инвентарная таблица

inv_num  emp_num
---------------------------
12       100

13       100

15       100

30       102

желаемый вывод

emp_num     last_name       invnum  count(inv_num)
-------------------------------------------------------------------------- 
100         john            12      3

101         mike            -       0

102         jes             30      1

Какой SQL-запрос я могу использовать в этом случае?

Ответы [ 3 ]

6 голосов
/ 22 июля 2011

Попробуйте это:

SELECT emp_num, last_name, MAX(inv_num) AS invnum, COUNT(inv_num) AS inv_count
FROM employee e LEFT OUTER JOIN inventory i ON e.emp_num = i.emp_num
GROUP BY e.emp_num, e.last_name
0 голосов
/ 22 июля 2011
SELECT 
    e.emp_num,
    e.last_name,
    IFNULL(MAX(i.inv_num),'-') AS 'invnum',
    COUNT(i.inv_num) AS 'count(inv_num)'
FROM
    employee e LEFT JOIN inventory i
    ON e.emp_num = i.emp_num
GROUP BY
    e.emp_num, e.last_name
0 голосов
/ 22 июля 2011

Вы могли бы сделать что-то вроде этого

Select E.Emp_Num,
       e.Last_name,
       MIN(Inv_Num) AS OldestInv,
       COUNT(Inv_Num) AS TotalInv
FROM Employee E
    LEFT OUTER JOIN Inventory I
        (E.Emp_Num = I.Emp_Num)
GROUP BY E.Emp_Num, E.Last_Name

Это даст вам минимальный номер счета и общее количество. Левое внешнее соединение - это ключ

...