IF(($q1) > 0, 1, 0)
To jest część zwracająca błąd.
Również sposób, w jaki to masz, $q1
jest oceniany dwukrotnie, co prawdopodobnie nie jest tym, czego chcesz.
Jeśli dobrze rozumiem, co próbujesz zrobić, powinieneś być w stanie po prostu pominąć tę część. Jeśli $q1
nie zwraca żadnych wierszy, a następnie IN
wyrażenie po prostu do niczego nie pasuje.
Należy również zauważyć, że IN
z podzapytaniami jest raczej nieefektywny w MySQL; działałby znacznie szybciej z połączeniem:
SELECT `c_title` FROM `c_content` JOIN ($q1) `a` ON `c_content`.`c_id`=`a`.`bd_h_id`