Mam pewien problem, z którym męczę się od kilku dni i nie mogę znaleźć rozwiązania...
Mam dwie tabele:
tabela segregator:
+--+------+-----------+ | id | tytul | opis_plat | +--+------+-----------+ | 1 | tytul1| PC | | 2 | tytul1| PS2 | | 3 | tytul2| PC | | 4 | tytul2| PS3 | | 5 | tytul3| PS3 | ...
tabela galeria:
+-----------+-------------+-----------+ | album_id | album_title | platforma| +-----------+-------------+-----------+ | 1 | tytul1 | PS2 | | 2 | tytul2 | PC | | 3 | tytul2 | PS3 | ...
Potrzebuje pobrać wszystkie rekordy, które istnieją w tabeli segregator, a nie posiadają odpowiedników w tabeli galeria, by sprawdzić, dla jakich elementów w segregatorze nie dodałem galerii.
Czyli: powinno zwrócić z tabeli segregator rekordy:
1) rekord o id 1, bo w tabeli galeria nie ma rekordu o platformie: PC (pomimo, że jest rekord o album_title: tytul1).
2) rekord o id 5, bo w tabeli galeria nie ma rekordu o tytule tytul3, czyli nie ma również takiego z platformą PC3.
Czyli rozchodzi się o to, żeby zgadzały się wartości obu pól (tytul=album_title I opis_plat=platforma).
No i mam problem, bo udało mi się zrobić, by pobierało te rekordy, które nie mają galerii odpowiadającej tytułowi. Mój kod wygląda tak:
Czyli przykładowo mam w katalogu 5 elementów o tytule elem1 i 5 różnych platformach (PC, PS3, PS2, PSP, X360) itd. Zwraca prawidłowo. Ale... gdy dodam galerię dla np. elem1 i PS3, nie zwraca mi już żadnego rekordu...
CREATE TEMPORARY TABLE gal SELECT album_id, album_title, platforma FROM galeria GROUP BY galeria.album_title SELECT tab2.tytul, tab2.id, tab2.opis_plat FROM gal tab1 RIGHT JOIN segregator tab2 ON tab2.tytul=tab1.album_title WHERE tab1.album_title IS NULL GROUP BY tab2.tytul
Myślę, że nie zamotałem zbyt mocno...
Proszę o pomoc, bo nie mam pojęcia jak to wykonać....
Pozdrawiam serdecznie, Rytek.