как объединить два подзапроса sql - PullRequest
0 голосов
/ 17 марта 2019

у меня 2 таблицы
1-е имя (сотрудник) имеет 3 столбца (emp_id, first_name, last_name)
имя второй таблицы (works_with) также имеет 3 столбца (emp_id, client_id, total_sales)
в таблице (works_with) один и тот же emp_id может быть связан с другим client_id

Мне нужно извлечь из таблицы (work_with) таблицы (имя_пользователя) и (фамилия_имя) формы (сотрудник) и их (total_sales) более 30000

Я использовал этот код, чтобы дать мне (emp_id) * с (total_sales) более 30000

SELECT SUM(works_with.total_sales), works_with.emp_id
FROM works_with
WHERE works_with.emp_id IN (SELECT works_with.emp_id
                            FROM works_with 
                            WHERE works_with.total_sales > 30000) 
GROUP BY works_with.emp_id;

и я использовал этот код, чтобы дать мне (first_name) и (last_name) из них (emp_id) *

SELECT employee.first_name, employee.last_name
FROM employee
WHERE employee.emp_id IN (SELECT works_with.emp_id
                          FROM works_with
                          WHERE works_with.total_sales > 30000);

есть ли способ объединить 2 кода или любой другой способ получить желаемый результат

Спасибо

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Вы просто ищете JOIN?

SELECT e.first_name, e.last_name, SUM(ww.total_sales)
FROM works_with ww JOIN
     employee e
     ON ew.emp_id = ww.emp_id
WHERE ww.emp_id IN (SELECT ww2.emp_id
                    FROM works_with  ww2
                    WHERE ww.total_sales > 30000
                   ) 
GROUP BY e.emp_id, e.first_name, e.last_name;

Подзапрос не нужен.Он реализует эту логику:

SELECT e.first_name, e.last_name, SUM(ww.total_sales)
FROM works_with ww JOIN
     employee e
     ON ew.emp_id = ww.emp_id
GROUP BY e.emp_id, e.first_name, e.last_name
HAVING MAX(ww.total_sales) > 30000;

Однако я подозреваю, что вы хотите:

SELECT e.first_name, e.last_name, SUM(ww.total_sales)
FROM works_with ww JOIN
     employee e
     ON ew.emp_id = ww.emp_id
GROUP BY e.emp_id, e.first_name, e.last_name
HAVING SUM(ww.total_sales) > 30000;
0 голосов
/ 18 марта 2019

Содействие здесь, поскольку я заметил ошибку в другом ответе.Смотрите здесь, как работают разные типы JOIN: (ссылка) .

SELECT 
    Employee.First_Name, 
    Employee.Last_Name, 
    SUM(WW.Total_Sales)
FROM 
    Works_With AS WW
        INNER JOIN Employee AS Employee
            ON Employee.EMP_ID = WW.EMP_ID
GROUP BY 
    Employee.EMP_ID, 
    Employee.First_Name, 
    Employee.Last_Name
HAVING 
    SUM(WW.Total_Sales) > 30000;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...