2013-12-09 6 views
0

Я пытаюсь сделать отчет, и у меня есть некоторый dificulty, который проектирует запрос, чтобы показать нужные мне данные.Запрос, возвращающий значения, когда определенное количество строк соответствует определенному условию

У меня есть 2 таблицы:

+-----------+------------+----------+ 
+TherapyID + CostumerID + ClinicID + 
+-----------+------------+----------+ 
+ 1  + John  + Clinic 1 + 
+-----------+------------+----------+ 
+ 2  + Susan  + Clinic 2 + 
+-----------+------------+----------+ 
+ 3  + Mary  + Clinic 3 + 
+-----------+------------+----------+ 


+-----------+--------------+-----------+--------+ 
+TherapyID + TherapyLine + Treatment + Result + 
+-----------+--------------+-----------+--------+ 
+  1  +  1  +  A  + Success+ 
+-----------+--------------+-----------+--------+ 
+  1  +  2  +  B  + Success+ 
+-----------+--------------+-----------+--------+ 
+  1  +  3  +  C  + Success+ 
+-----------+--------------+-----------+--------+ 
+  2  +  1  +  A  + Success+ 
+-----------+--------------+-----------+--------+ 
+  2  +  2  +  B  + Fail + 
+-----------+--------------+-----------+--------+ 
+  2  +  3  +  C  + Success+ 
+-----------+--------------+-----------+--------+ 
+  3  +  1  +  A  + Success+ 
+-----------+--------------+-----------+--------+ 
+  3  +  2  +  B  + Success+ 
+-----------+--------------+-----------+--------+ 
+  3  +  3  +  C  + Fail + 
+-----------+--------------+-----------+--------+ 

мне нужно сделать запрос, который показывает мне только клиентам или therapyid о том, что успешно получили все процедуры A, B, C

Результат запроса должно быть так:

+------------+-------------+----------+---------+-----------+---------+ 
+ TherapyID + TherapyLine + Customer + Clinic + Treatment + Result + 
+------------+-------------+----------+---------+-----------+---------+ 
+  1  +  1  + John + Clinic 1+ A  + Success + 
+------------+-------------+----------+---------+-----------+---------+ 
+  1  +  2  + John + Clinic 1+ B  + Success + 
+------------+-------------+----------+---------+-----------+---------+ 
+  1  +  3  + John + Clinic 1+ C  + Success + 
+------------+-------------+----------+---------+-----------+---------+ 

Это был единственный therapyid, где все процедуры A, B, C где Успех я действительно не имеют ни малейшего представления о том, как запросить это то, что я пытался до сих пор возвращает результаты ВСЕГДА из TherapyID * 2,3 *, где результат был Успех слишком , Thx за помощь.

+0

Это причудливая клиника платья? И подумайте о том, чтобы обеспечить надлежащие DDL (и/или sqlfiddle) того же самого. – Strawberry

+0

Что делать, если 'TheraphyID 1' обрабатывает' D', который не получается в результате, будет ли он включен в список, если он имеет 'A, B, C', и он преуспевает? –

+0

В этом случае он ничего не должен возвращать. – user31469

ответ

0
select t1.TherapyID,TherapyLine,t1.CostumerID as Customer,Clinic,Treatment, 
Result from table1 t1,table2 t2 where t1.TherapyID =t2.TherapyID and 
t2.result='Success' group by customerID having count(customeID)=3 
0
SELECT t1.TherapyID,TherapyLine,CustomerID as Customer,ClinicID as Clinic,Treatment,Result 
FROM FROM t1 JOIN t2 ON t1.TherapyID=t2.TherapyID WHERE CustomerID IN 
(SELECT CustomerID 
FROM t1 JOIN t2 ON t1.TherapyID=t2.TherapyID AND Result='Success' 
GROUP BY CustomerID 
HAVING COUNT(CustomerID)=3) 
Смежные вопросы