Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (6)

Наибольший вклад в теги

Все теги (13)

Лучшие ответы пользователя

Все ответы (10)
  • MySQL - выборка из таблицы многие ко многим

    @nmike
    SELECT mags.*, COUNT(*) AS c
    FROM mag_tov, tovs, mags
    WHERE mt_tov_id = tov_id AND mt_mag_id = mag_id
    AND tov_name IN ("ПЕРЕЧИСЛИТЕ_ЧТО_ХОТИТЕ")
    GROUP BY mag_id
    HAVING c = КОЛЛИЧЕСТВО_ТОГО_ЧТО_ХОТИИТЕ

    если надо 'молоко', 'мясо' и 'чай'

    то
    SELECT mags.*, COUNT(*) AS c
    FROM mag_tov, tovs, mags
    WHERE mt_tov_id = tov_id AND mt_mag_id = mag_id
    AND tov_name IN ('молоко', 'мясо' и 'чай')
    GROUP BY mag_id
    HAVING c = 3


    просто вложенные запросы в мускуле очень большое зло.
    Ответ написан
  • Сложный запрос к БД

    @nmike
    ну вот если хочется поизвращаться :)

    SET @place := 0, @map_id := 0;
    
    SELECT 
    	IF(@map_id != map_id, @place := 1, @place := @place + 1) AS place, 
    	IF(@map_id != map_id, @map_id:=map_id, map_id) AS map_id,  
    	user_id, map_score , level, @place
    FROM (
      SELECT m.map_id, m.user_id, m.score AS map_score, p.level
        FROM MapsScores AS m, PlayersData AS p 
       WHERE m.user_id = p.id
       GROUP BY m.map_id, m.user_id 
       ORDER BY m.map_id ASC, m.score DESC
    ) AS tops
    GROUP BY map_id, user_id HAVING place <= СКОЛЬКО_НАРОДУ_ХОТИТЕ_В_ТОП
    ORDER BY map_id ASC, map_score DESC


    но проще сделать 50 запросов на каждую карту в отдельности — мускул вам будет благодарен :)
    Ответ написан
  • MySQL и память

    @nmike
    Вообще, если используете только иннодб, память там сьедается файлом буфера данных-его принято выставлять до80% от доступной оперативной — innodb_buffer_pool_size. В нем храниться страницы с данными и индексами, что бы не лазить лишний раз на медленный диск, а обращаться всегда к оперативке.
    А все остальные буфера-это крохи по сравнению с этим(если конечно мы говорим о сервере с гигами оперативки:) )
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (5)