Задавайте вопросы, мы ответим
Вы не зашли.
решил пойти по другому пути сделал вот как
if($filter_common == on) { $f_common = 'AND (I.commonitem = 0)'; }
if($filter_monster == on) { $f_monster = 'AND (I.monsteritem = 0)'; }
switch($filter_monster): case 'on': $sql = "SELECT * FROM items as I JOIN item_names as N ON (I.item_type = '$type') AND (I.weapon_type = '$subtype') AND (I.equip_pet = 0) AND (I.crystal_type = '$gr') $f_monster $f_common AND (I.id = N.id) ORDER BY N.name, N.additionalname;"; break; endswitch;
switch($filter_common): case 'on': $sql = "SELECT * FROM items as I JOIN item_names as N ON (I.item_type = '$type') AND (I.weapon_type = '$subtype') AND (I.equip_pet = 0) AND (I.crystal_type = '$gr') $f_monster $f_common AND (I.id = N.id) ORDER BY N.name, N.additionalname;"; break; endswitch;
Неактивен
Не, так не пойдет. В ON надо писать условие связи. В Вашем случае —
I.id = N.id, а в WHERE надо писать ограничения. Начните с этого
Неактивен
я пробовал с WHERE но там проблем больше получается а так всё работает... а если работает зачем что то менять?
Неактивен
Угу, если написать плохую программу, а потом натравить на нее компилятор,
то он выдаст большое количество ошибок. Если же потом компилятору подсунуть
неверный ключ — он выдаст всего одну ошибку. Стало быть, проблем меньше
получается
Если бы работало — Вы бы не написали на форум, правда?
Неактивен
ну... я написал когда у меня встала загвозка на этом но потом я её решил вот таким вот способом... согласен что это получился говнокод но главное что работает и это радует душу . Ладно убедили сделаю так..
switch($filter_monster): case 'on': $sql = "SELECT * FROM items as I JOIN item_names as N ON (I.item_type = '$type') AND (I.weapon_type = '$subtype') AND (I.equip_pet = 0) AND (I.crystal_type = '$gr') AND (I.id = N.id) WHERE $f_monster $f_common ORDER BY N.name, N.additionalname;"; break; endswitch;
одобряете?
Отредактированно french (06.12.2010 16:44:34)
Неактивен
Мне ничего не говорят слова $f_monster и $f_common. На самом деле,
я хочу, чтобы Вы написали какой-нибудь простой запрос, в котором сами
бы разобрались.
Что-то такого типа:
SELECT name FROM items i JOIN item_names n USING (id)
WHERE item_type='...' AND weapon_type = '...' AND equip_pet = '...' AND crystal_type='...'
ORDER BY name;
Тут сразу будет понятно, что ограничения все — только на таблицу items, а item_names
неприятна тем, что по ней сортировка. И понятно, что на items нужен индекс на поля в
WHERE (один на все поля), а на item_names — по id.
Кстати, а зачем у Вас имена в отдельной табличке?
Неактивен
Для динамического переключение русских и английских имён и описаний, вобще этот вопрос не ко мне т.к. скрипты которые я переделываю были написаны не мной, я лишь просто его довожу до ума и заодно учусь калякать на пхп
Неактивен
а $f_monster и $f_common это
if($filter_common == on) { $f_common = 'AND (I.commonitem = 0)'; }
if($filter_monster == on) { $f_monster = 'AND (I.monsteritem = 0)'; }
Неактивен