Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
SELECT map , weapons, user_name, MIN(finish_time) FROM ((SELECT map , weapons, user_name, finish_time FROM kz_nub) UNION (SELECT map , weapons, user_name, finish_time)) GROUP BY map
Непонятно правда зачем 2 таблицы с одинаковой структурой
#1248 - Every derived table must have its own alias У каждой полученной таблицы должен быть свой собственный псевдоним
т.е. если даже назначить псевдоним - будет 2 таблицы ?
Добавлено (15.12.2009, 18:01:11) --------------------------------------------- хм http://www.ageent.ru/sql-union.html SELECT map , weapons, user_name, MIN(finish_time) FROM kz_nub GROUP BY map UNION SELECT map , weapons, user_name, MIN(finish_time) FROM kz_pro GROUP BY map
Но наде все перепроверить
Добавлено (15.12.2009, 18:13:31) --------------------------------------------- Можно ли добавить условие что бы выводилось map - с минимальным finish_time так как в предыдущем моем посте - выводятся и из про и из нюб результат с самым маленьким finish_time. А надо что бы еще и из них выберало наименьший )
Добавлено (15.12.2009, 18:15:48) --------------------------------------------- Jj прихожу к выводу что надо делать как у РоманоВа, но еще до конца пока что не получилось..
Добавлено (15.12.2009, 18:24:53) --------------------------------------------- Все равно ругается на псевдонимы.
SELECT map , weapons, user_name, MIN(finish_time) FROM (( SELECT map , weapons, user_name, MIN(finish_time) FROM kz_nub AS test ) UNION ( SELECT map , weapons, user_name, MIN(finish_time) FROM kz_pro AS testt )) GROUP BY map
SELECT map , weapons, user_name, MIN(finish_time) FROM ((SELECT map , weapons, user_name, finish_time FROM kz_nub) AS kz__noob UNION (SELECT map , weapons, user_name, finish_time FROM kz_pro) AS kz__proo ) GROUP BY map http://romanov4400.mybrute.com
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS kz__proo ) GROUP BY map LIMIT 0, 30' at line 1
Что то не пашет, сам пробую что ыб хоть что то вышло с самым простым запросом SELECT ... FROM ((SELECT UNION SELECT ))
но покачто успехов не добился.
Добавлено (15.12.2009, 19:14:23) --------------------------------------------- Кажется сделал, только осталось перепроверить )
SELECT map , weapons, user_name, MIN(finish_time) FROM ( SELECT map , weapons, user_name, finish_time FROM kz_nub UNION SELECT map , weapons, user_name, finish_time FROM kz_pro ) AS test GROUP BY map
Добавлено (15.12.2009, 19:19:24) --------------------------------------------- PomanoB, Мой последний запрос работает, твой нет - на сколько я понимаю проблема в лишних -->()<--
Логика: Создаем запрос: запрашиваем из: (1 запрос union 2 запрос ) обзываем таблицей. Групируем по картам. Примерно так.
Верно? парачка быстрых тестов показала что все пока что верно.
P/s/ Приятно когда помогают и сам до чего то додумываешься. По большому счету проблема была у меня в не знании UNION и подзапросов.
Добавлено (24.02.2010, 13:43:31) --------------------------------------------- Обнаружилась проблема: http://izlapzla.ru/jump/kreedz.php смотрим на первую строчку: 1 ae_trixjump 03:00.471 nk^ 131 knife
в чем причина? и таких не соответствий полно. Соответствует только MIN(finish_time) данные из других столбцов могут взяться из любой строки.
что делать? бьюсь как об стенку горох Заметил это дело начав делать статистику для дуэли http://izlapzla.ru/jump/duel.php Аналогичная ситуация - так как запросы аналогичны.
Сообщение отредактировал tavot - Вторник, 15.12.2009, 19:20:19
SELECT map , weapons, user_name, gocheck, MIN(finish_time) FROM ( SELECT map , weapons, user_name, gocheck, finish_time FROM kz_nub UNION SELECT map , weapons, user_name, gocheck, finish_time FROM kz_pro ) AS test GROUP BY map")
Если нжно могу полностью весь дам сделать, но он будет очень большим. более 2000 строк (
Это что касается одного запроса. Вот второй - аналогичная беда: Дамп:
-- -- Структура таблицы `kz_duel` --
CREATE TABLE `kz_duel` ( `id` int(5) NOT NULL auto_increment, `W_name` varchar(70) NOT NULL, `L_name` varchar(70) NOT NULL, `W_time` float NOT NULL, `L_time` float NOT NULL, `R_time` float NOT NULL, `map` varchar(72) NOT NULL, `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, `z` varchar(1) NOT NULL, `zp` varchar(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;
SELECT map , weapons, user_name, gocheck, finish_time FROM ( SELECT map , weapons, user_name, gocheck, finish_time FROM kz_nub UNION SELECT map , weapons, user_name, gocheck, finish_time FROM kz_pro ) AS test WHERE finish_time IN ( SELECT MIN(finish_time) AS finish_time FROM ( SELECT map, finish_time FROM kz_nub UNION SELECT map, finish_time FROM kz_pro ) AS test2 GROUP BY map )
PomanoB, Спасибо, работает как надо, но длительность 6 секунд и нагрузка на проц появляется значительная. Попробую на sql форумах поспрашать.
Добавлено (27.02.2010, 15:28:09) --------------------------------------------- PomanoB, Если интересно: вот рабочий запрос:
Quote
SELECT d1.W_name,d1.L_name,d1.W_time,d1.L_time,d1.R_time, m.map_name FROM kz_map m left join kz_duel d1 ON m.map_name=d1.map left join kz_duel d2 ON d1.map=d2.map and d1.w_time > d2.w_time where d2.map is null
PomanoB, это пришлось создавать еще одну. Поговорил тут с many, он меня убедил что нужна одна таблица и поделился своим запросом ) Если интересно - могу в личку скинуть.