Sorry, że tak z partyzanta po wielu miesiącach nieobecności na forum, ale mózg już się stopił i nie idzie ruszyć dalej.
Mam 2 tabele:
Tabela a:
---------------------------------------
id_a | nazwa_a | populacja
---------------------------------------
3 | kot | 0
4 | pies | 2
5 | lis | 10
6 | wilk | 0
7 | dzik | 3
---------------------------------------
Tabela b:
-----------------------------------------
id_b | data_b | historia
-----------------------------------------
4 | 20.02.2014 | 2
5 | 25.03.2014 | 8
5 | 10.05.2014 | 8
3 | 10.06.2014 | 0
5 | 10.07.2014 | 9
5 | 15.09.2014 | 10
-----------------------------------------
Potrzebuję wyciągnąć pogrupowaną listę istniejącej (populacja>0) populacji zwierząt, którym odnotowano wzrost populacji do dnia np. 01.09.2014 ale pomijając rekordy (nazwy zwierząt), którym zaktualizowano informacje (data_b) po terminie 01.09.2014.
oraz wszystkie zwierzęta pozostałe o dodatniej populacji, nie posiadające historii zmian w tabeli b.
Czyli z powyższych tabel interesuje mnie, aby pobrać:
1) pies | id 4 | populacja 2
2) dzik | id 7 | populacja 3
** kota nie pobiera ponieważ jest 0 kotów
*** lisa nie pobiera, ponieważ ostatnia aktualizacja miała miejsce po 01.09.2014
Próbowałem coś takiego:
SELECT * FROM tabela_a LEFT JOIN tabela_b
ON (tabela_a.id_a = tabela_b.id_b)
WHERE populacja>0
AND data_b < $data_01_09_2014
Oczywiście nie zadziała, ponieważ pominie rekord z 15.09.2014 i wyświetli kota z datą 10.07.2014, a ja chciałbym zastosować warunek wyszukiwania z tabeli a, tylko w przypadku, gdy w babeli b nie ma wpisu do danego id z określoną datą.
Jakieś wskazówki...?