Добрый вечер. Столкнулся с проблемой. Имеется запрос: Код (Text): SELECT id, name, game, CASE type WHEN 1 THEN 1 WHEN 2 THEN 2 WHEN 3 THEN 3 ELSE 4 END FROM dynamit_tournaments WHERE id='1' вывожу через: print_r(); Показывает: Код (Text): Array ( [0] => 1 [id] => 1 [1] => DyNaMiT [name] => DyNaMiT [2] => 3 [game] => 3 [3] => 2 [CASE type WHEN 1 THEN 1 WHEN 2 THEN 2 WHEN 3 THEN 3 ELSE 4 END] => 2 ) Вроде как все норм. Но по сути мне нужен запрос вида: Код (Text): SELECT id, name, game, CASE type WHEN 1 THEN (SELECT COUNT(id) FROM dynamit_tournaments_teams_1 WHERE id_tour=1) WHEN 2 THEN (SELECT COUNT(id) FROM dynamit_tournaments_teams_2 WHERE id_tour=2) WHEN 3 THEN (SELECT COUNT(id) FROM dynamit_tournaments_teams_3 WHERE id_tour=3) ELSE (SELECT COUNT(id) FROM dynamit_tournaments_teams_4 WHERE id_tour=4) END FROM dynamit_tournaments WHERE id='1' Который к сожалению отображается так: Код (Text): Array ( [0] => 1 [id] => 1 [1] => DyNaMiT [name] => DyNaMiT [2] => 3 [game] => 3 [3] => 0 [CASE type WHEN 1 THEN (SELECT COUNT(id) FROM dynamit_tournaments_teams_1 WHERE id_tour=1) WHEN 2 THEN (SELECT COUNT(id) FROM dynamit_tournaments_teams_2 WHERE id_tour=2) WHEN 3 THEN (SELECT COUNT(id) FROM dynamit_tournaments_teams_3 WHERE id_tour=3) ELSE (] => 0 ) Уже показывает 0, хотя в каждой таблице создал по 1 записи(то есть запись соответствует критериям). Народ, помогите как мне такое реализовать?
за исключением того, что у тебя все значения по два раза идут. используй _assoc Это не тот запрос, который тебе нужен http://yandex.ru/yandsearch?text=mysql+join
я думал про join, но не могу логику понять, как связать таблицы в данном случае. Подскажите пожалуйста или дайте пример. Заранее благодарен.
все зависит от того как они связаны? таблицы dynamit_tournaments и dynamit_tournaments_teams_1... по какому полю связаны? почему их четыре? может оставить одну но добавить поле type и по нему отличать эти teams? тогда и запрос получится очень простой и быстрый
Все зависит от поля type в dynamit_tournaments. Поле содержит от 1 до 4. То бишь в поле может быть только 4 значения. Отличать как раз по типу: то бишь если type = 1 то нужно искать в dynamit_tournaments_teams_1. Но скорее всего я просто объединю эти таблицы в одну, похоже так все же действительно будет проще)