AMX MOD X
Среда, 11.12.2024, 02:49:25



Приветствую Вас Гость | RSS
[ Главная ] [ Помощь в создании запроса sql - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Помощь в создании запроса sql
tavotДата: Вторник, 15.12.2009, 16:46:07 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
Дано:
1 таблица kz_nub
2 таблица kz_pro
Структура у них одинаковая.
Code
user_name  map  finish_time  gocheck  weapons  data  geo_ip

Запрос:
SELECT map , weapons, user_name, MIN(finish_time) FROM kz_nub GROUP BY map

Собственно задача:
Сделать дописать/переписать запрос так что бы, список карт был и из таблицы kz_nub и kz_pro.

Как сам не бился - ни чего не выходит. или это сделать невозможно?
Если для этого нужно будет менять имена полям из одной таблицы - это не проблема.

Вот пример: http://eqline.interzet.ru/kreedz.html
но я не знаю там 2 таблицы или одна, но судя по всему - 2

Сообщение отредактировал tavot - Вторник, 15.12.2009, 16:49:24
 
PomanoBДата: Вторник, 15.12.2009, 16:55:21 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
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 таблицы с одинаковой структурой


http://romanov4400.mybrute.com
 
tavotДата: Вторник, 15.12.2009, 18:24:53 | Сообщение # 3
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
#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

 
PomanoBДата: Вторник, 15.12.2009, 18:32:21 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
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
 
tavotДата: Среда, 24.02.2010, 13:43:31 | Сообщение # 5
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
#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

И открываем эту карту, и видим:

1 KzJ | We ^_^ 03:00.471 32 knife
2 nk^ 07:01.087 131 knife

в чем причина? и таких не соответствий полно.
Соответствует только MIN(finish_time)
данные из других столбцов могут взяться из любой строки.

что делать? бьюсь как об стенку горох
Заметил это дело начав делать статистику для дуэли
http://izlapzla.ru/jump/duel.php
Аналогичная ситуация - так как запросы аналогичны.

Сообщение отредактировал tavot - Вторник, 15.12.2009, 19:20:19
 
PomanoBДата: Среда, 24.02.2010, 18:04:38 | Сообщение # 6
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Дай дамп бд и свои запросы

http://romanov4400.mybrute.com
 
tavotДата: Среда, 24.02.2010, 23:57:50 | Сообщение # 7
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
PomanoB,
Дамп 1 таблицы:

Дамп второй:

Вот запрос:

Code
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 строк (

Это что касается одного запроса.
Вот второй - аналогичная беда:
Дамп:

Запрос:

Code
SELECT id,W_name, L_name,MIN(W_time), L_time, min(R_time), map FROM kz_duel  GROUP BY map ORDER BY map
 
PomanoBДата: Четверг, 25.02.2010, 10:46:09 | Сообщение # 8
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Code
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
)

Это тупо, но что-то не могу придумать ничего другого


http://romanov4400.mybrute.com
 
tavotДата: Суббота, 27.02.2010, 15:28:09 | Сообщение # 9
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
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

Если еще интересней где нашел решение:
http://www.sql.ru/forum/actualthread.aspx?tid=687908

 
PomanoBДата: Суббота, 27.02.2010, 22:08:53 | Сообщение # 10
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
kz_map, что это за таблица а?

http://romanov4400.mybrute.com
 
tavotДата: Воскресенье, 28.02.2010, 01:13:39 | Сообщение # 11
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
PomanoB,
это пришлось создавать еще одну.
Поговорил тут с many, он меня убедил что нужна одна таблица и поделился своим запросом )
Если интересно - могу в личку скинуть.
 
PomanoBДата: Воскресенье, 28.02.2010, 16:21:24 | Сообщение # 12
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Давай)

http://romanov4400.mybrute.com
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024