За последние 24 часа нас посетили 15143 программиста и 1674 робота. Сейчас ищут 819 программистов ...

запрос составить не могу =)

Тема в разделе "Вопросы от блондинок", создана пользователем antonn, 1 мар 2010.

  1. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Давно базы не мучал, встал в ступор, мне кажется я раньше как-то это обходил :)

    Есть табличка вот такая:
    Код (Text):
    1. CREATE TABLE games (
    2.   game_id INTEGER PRIMARY KEY AUTOINCREMENT,
    3.   user_id INTEGER,
    4.   break INTEGER,
    5.   wl INTEGER,
    6.   map_low TEXT );
    В ней хранятся записи проведенных игр на карте map_low, победа/поражение хранится в поле "wl" (1 - победа, 0 - поражение), в поле "break" находится метка об успешном завершении игры (0 - успешное окончание (с проигрышем или нет), больше нуля - игра "оборвана").

    Нужно одним запросом вытянуть количество игр на каждой карте, количество выигрышей, проигрышей и незавершенных игр. Игра считается выиграной или проиграной если она не была "оборвана" (break='0').

    Запрос "в лоб" не прошел, кол-ва выигрышей/проигрышей/незаконченных не верное:
    Код (Text):
    1. select games.map_low,count(games.game_id) as count_games, count(w.game_id), count(ll.game_id), count(br.game_id) from games
    2.    
    3.     LEFT JOIN games w ON w.game_id = games.game_id AND w.wl='1' AND w.break='0'
    4.     LEFT JOIN games ll ON ll.game_id = games.game_id AND ll.wl='0' AND ll.break='0'
    5.     LEFT JOIN games br ON br.game_id = games.game_id AND br.break>'0'
    6.  
    7.     where (games.user_id='1') AND (games.break='1') group by games.map_low ORDER BY count_games DESC
    как запрос-то смострячить? :) очень не хочется делать их несколько...
     
  2. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    думаю возможно несколько будет быстрее, чем куралесить твои задачи...
     
  3. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    дело не в быстрлдействии, а в удобстве получения результата
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    SELECT map_low, COUNT(break), COUNT(wl) FROM games GROUP BY map_low, break, wl HAVING wl=1
    Что выведет?
     
  5. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    ерунду какую-то вывел :)
    я кажется нашел свой косяк, там в нижнем условии "(games.break='1')" (я тут опечатался, в проге =0), т.е. запрос отсеивает неоконченные игры. Придется общую сумму просто брать после получения суммируя победы+поражения.

    пойду-ка я посплю :)
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    antonn
    О, дай потом поиграть в че напишешь)
     
  7. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    antonn
    Ыыыыы клёво, я тоже всегда хотел игру написать, первое что написал была игра браузерная типа "корпус\пояс" без функций, перебор ударов блоков тупо if 1500тыс строк :DDD там был даже магазин с оружеем статы уровни чат все как в обычной игре ))))
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ты стырил джеффи из TA!
     
  10. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Да была бы возможность я бы вообще все оттуда стырил, это моя любимая (и первая из "взрослых", дюна не в счет) стратегий =)
    а медальки я стырил из БФ2, вот буду и глобальную статистику наворачивать как там, а пока на клиенте локальную на sqlite делаю :)
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    antonn
    где скачать?)
     
  12. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    О, башеньки.

    Самые крутые - те, что картами для варкрафта :)
     
  13. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Padaboo
    нигде, и пока еще долго нигде :)

    +Sten+
    да ну, больше всего времени украло Xeno, флешевая игра http://desksoft.ru/index.php?swf_player=swf&id=26
    затягивает просто пипец
     
  14. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не могу пройти 5-й лвл :(