2017-03-22 3 views
0

erfüllen. Ich habe zwei Tabellen, operation und operationTask. lassen Sie uns sagen, dass operation nurWählen Sie, wo alle Zeilen mit demselben Fremdschlüssel die Bedingung

  • ID

und operationTask hat

  • ID
  • operation_id "als Fremdschlüssel"
  • Status "Boolean 0: 1"

Die Beziehung zwischen diesen beiden Tabellen ist Eins-zu-viele.

Ich möchte alle Operationen auszuwählen, in dem alle ihre Aufgaben "operationtask" Status gleich 1.

Was ich versucht habe:

SELECT * 
FROM `operation` 
WHERE operation.id = All(
    SELECT task.operation_id 
    FROM operationtask task 
    WHERE task.status=1 
    GROUP BY task.operation_id) 

zum Beispiel:

Betrieb:

ID 
--- 
1 
2 
3 

operationsaufgabe:

ID operation_id status 
--- ------------ ------ 
1   1   1 
2   1   0 
3   2   1 
4   2   1 
5   3   0 
6   3   0 

sollte das Ergebnis sein:

Betrieb:

ID 
--- 
2 
+0

Was das Problem mit Ihrem Code ist? – Jens

+0

@Jens hat das richtige Ergebnis nicht zurückgegeben – Mohammad

+0

können Sie einige Beispieldaten mit erwartetem Ergebnis und Ergebnis anzeigen – Jens

Antwort

1
select * 
from operations o 
where not exists (
     select 1 
     from operationtask t 
     where t.operation_id = o.id and t.status = 0) 
Verwandte Themen