Ich habe eine Tabelle, die als service
folgt aussieht:Kombination einfache Abfragen in MySQL
id | service | status | multicall | date_created |
--------------------------------------------------------------------
10 | Cleaning | 1 | 0 | 2016-09-20 19:11:01 |
11 | Gardening | 1 | 0 | 2016-09-20 19:12:07 |
12 | Dishes | 1 | 1 | 2016-09-20 19:14:28 |
13 | Take out rubbish | 1 | 1 | 2016-09-20 19:14:28 |
Dies ist eine eine Tabelle, die Benutzer auswählen können, aus dem Dienst können, dass sie wollen, dass jemand zu tun. Sobald der Dienst beendet ist, wird die Benutzer Geschichte in einer anderen Tabelle gespeichert user_service_hist
:
id | user_id | service_id | date_created |
--------------------------------------------------
1 | 1 | 10 | 2016-11-25 10:49:05
2 | 1 | 11 | 2016-11-27 23:58:46
3 | 1 | 12 | 2016-11-28 00:01:36
4 | 1 | 13 | 2016-11-28 12:07:17
Der Benutzer kann nur jeden Dienst auswählen, wenn außer der Service mit einem multicall column
Wert von 1
markiert.
Als ich die Liste der verfügbaren Service rufen verwende ich die follwing Abfrage:
SELECT s.id, s.service, s.date
from service s WHERE not exists (Select 1 from user_service_hist ush
where ush.service_id = s.id AND ush.user_id = 1)
Diese Abfrage wählt Nullzeilen, wie ich der Benutzer alle Dienste abgeschlossen hat. Ich möchte Service Nr. Anzeigen. 12 und 13 immer, da diese einen multiplizierten Spaltenwert von 1 haben, unabhängig davon, ob sie abgeschlossen wurde oder nicht. Kann mir jemand sagen, wie ich meine Anfrage ändern soll?
Wäre das nicht ein einfaches „OR s.multicall = 1“ genügen? – hank
@Stefan Ich denke, Hank hat Recht. ist nicht? –