Hallo 0815,
hmmm, kann auf Anhieb auch nix fehlerhaftes erkennen. Hier ein paar Tipps & Fragen, die Dir evtl. helfen könnten:
1. Was beinhalten die Variablen $fsk_lock und $group_check genau? Fangen die z.B. auch mit einem "and" an? Bzw. ist es korrekt, wie das SELECT in Zeile 14 endet, mit - .."') - ?
2. Lass Dir mal kurz vor dem query die Variablen ausgeben z.B. per:
echo ('<script type="text/javascript">alert("'.$c_start.'\n'.$c_end.'\n'.$fsk_lock.'\n'.$group_check.'");</script>');
um zu sehen, ob auch wirklich alles wie gewollt ankommt. Es könnte dann ggf. zu Fehlermeldungen kommen (z.B.: "header already sent ..." oder dergleichen), aber ist ja nur zum debuggen ...
3. Tippe am Ende jeder Zeile innerhalb des queries mal ein Leerzeichen ein ...
4. Benenne mal die beiden "p2c" am Ende von Zeile 13 um in irgend etwas anderes. Vielleicht hat er ein Problem mit der doppelten Referenzierung der Tabelle TABLE_PRODUCTS_TO_CATEGORIES .
5. Muss das "IN" am Ende von Zeile 12 nicht "ON" heißen? Bin mir grade nicht sicher ...
6. Hast Du mal versucht, das mit JOINS zu lösen statt mit Subselects? MySQL-Optimizer kommt angeblich mit Joins besser zurecht.
... es werden alle Produkt IDs ausgegeben, weil auch alle IDs in der Tabelle Products_To_Categories enthalten sind.
das könnte doch evtl. mit LEFT JOIN gelöst werden ...
Gruß, Ingo
P.S.: Bitte nacheinander testen, damit wir rausfinden können, woran es lag, falls irgendwas davon hilfreich sein sollte ... kannste ja dann berichten, dann lernen alle anderen (mich eingeschlossen) auch was
Ach und noch was: Du könntest auch des ganze query mal in ein Variable (z.B. $sql) packen und es dann ausführen als $manufacturers_query = xtDBquery($sql);
Kurz vor Ausführung siehst Du den geamten String mal an z.B. mit obiger <script>-Ausgabe.