Ich versuche, eine Abfrage erstellen, die die Werte aus der Tabelle Share_users_types
, die nicht in Tabelle Shares
unter bestimmten Bedingungen vorhanden sind, zurückgeben muss.MySQL LEFT JOIN mit mehreren Bedingungen
Share_types table
----------------
ID | Description
1 'Anual'
2 'Monthly'
Share_users_types table
-----------------------------
ID | user_id | share_type_id
1 1 1
2 1 2
3 2 1
Shares table
--------------------------------------------
ID | user_id | share_type_id | Year | Month
1 1 1 2015 null
2 1 2 2015 05
3 1 1 2016 null
4 2 1 2015 null
Wenn ich die folgenden Bedingungen in meiner Anfrage eingestellt, sollte es aus der Tabelle zurückkehren Share_users_type
:
- Jahr
2016
, Share TypAnual
-> 1 Ergebnisse ->User_id
: 2 - Jahr
2015
, TeilenummerAnual
-> 0 Ergebnisse - Jahr
2017
, TeilenummerAnual
-> 2 ergebnisse ->User_id
: 1 und 2 - Jahr
2017
, Monat 06, Share TypMonthly
-> 1 Ergebnis ->User_id
: 1
Mit dieser sagte ich ohne Erfolg versucht haben, die folgenden Abfragen:
SELECT sharetype.user_id
FROM share_users_types AS sharetype
LEFT JOIN shares AS share ON share.user_id = sharetype.user_id
WHERE share.user_id IS NULL AND
share.year != '2016' AND share_type_id = 1
SELECT sharetype.user_id
FROM share_users_types AS sharetype
LEFT JOIN shares AS share ON share.user_id = sharetype.user_id
WHERE share.year = '2016' AND share_type_id = 1