Witam,
Pierwszy raz się natknąłem na taki problem.
Otóż mam sobie tabele A z połączeniem do tabeli B.
mam połaczenie A.name z B.name (w rzeczywistości jest poprzez id ale tutaj maksymalnie upraszczam).
Moim celem jest odrzucenie wpisów po wprowadzonej tablicy danych.
i problem jest tutaj gdy daje WHERE B.name IS NULL OR B.name NOT IN ($array) to owszem odrzuca ale tylko jesli tabela A ma dokładnie takie same połaczenia do tabeli b jak w tablicy.
Gdy jest jedno więcej połączenie co nie ma w wyrażeniu NOT IN to mi ten wpis pobiera z bazy.
Ogólnie zapytanie wygląda mniej więcej tak.
SELECT A.columns, B.columns FROM A LEFT JOIN B ON A.kolumna_z_b_id = B.id WHERE B.name IS NULL OR B.name NOT IN ($array).
Proszę o jakieś rozwiązanie.
Wybacz, ale chyba za bardzo uprościłeś, bo ja nawet po kawie nie umiem zrozumieć co chcesz osiągnąć.
SELECT u.*, GROUP_CONCAT(t.tag_name, SEPARATOR " ,") AS tags FROM users u LEFT JOIN user_tags ut ON u.user_id=ut.user_id LEFT JOIN tags t ON t.tag_id = ut.tag_id WHERE t.name NOT IN ($tags) OR t.name IS NULL;
Próbowałbym w ten sposób:
SELECT u.* FROM `users` u WHERE u.`id` NOT IN (SELECT ut.`user_id` FROM `users_tags` ut LEFT JOIN `tags` t ON ut.`tag_id` = t.`id` WHERE t.`name` = "pantera");
SELECT u.* FROM `users` u WHERE u.`id` NOT IN (SELECT ut.`user_id` FROM `users_tags` ut LEFT JOIN `tags` t ON ut.`tag_id` = t.`id` WHERE t.`name` = "pantera");
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)