2015-11-19 4 views
-1

У меня есть три таблицы в SQL Server:Выбор данных из нескольких таблиц с использованием IN и подзапроса

  1. Оплата
  2. пособиях
  3. Отчисления

Все они имеют следующие столбцы: EmpId, Количество.

Я пишу запрос для выбора сумм из всех трех таблиц с помощью IN. Ниже приведен мой запрос

Select sum(P.Amount), sum(A.Amount), sum(D.Amount) 
from Pay P, Allowances A, Deductions D 
where P.empID=A.empID=D.empID IN (Select EmpId from Employees) 

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

+0

После того, как вы должны справиться с основными пунктами, как JOIN и UNION, если вы по-прежнему изо всех сил, рассмотрим следующие этой простой двухступенчатой ​​конечно действия: 1. Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли более легко воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. – Strawberry

+0

Hi @Strawberry благодарит вас за ответ. В принципе, я хочу получать зарплату, пособие и отчисления сотрудников один за другим, используя их идентификаторы сотрудников один за другим (выбранные из внутреннего запроса). Затем я передам эту информацию в отчет о кристалле. Я также изменил этот вопрос. Еще раз спасибо –

+0

Я могу только сослаться на мой предыдущий комментарий – Strawberry

ответ

0

Похоже, вам нужен UNION ALL запрос:

SELECT empID, 'Pay' AS fromtable, Amount 
FROM Pay 
WHERE empID IN (1200,1201) 
UNION ALL 
SELECT empID, 'Allowances' AS fromtable, Amount 
FROM Allowances 
WHERE empID IN (1200,1201) 
UNION ALL 
SELECT empID, 'Deductions' AS fromtable, Amount 
FROM Deductions 
WHERE empID IN (1200,1201) 
+0

Большое вам спасибо за ответ. Я буду использовать результаты для отчетов о кристаллах. Но что, если я использую подзапрос внутри предложения IN. Как и IN (выберите empID из EMIdTable) все таблицы вернут правильные суммы для одного и того же идентификатора один за другим? –

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