За последние 24 часа нас посетили 19082 программиста и 1625 роботов. Сейчас ищут 732 программиста ...

Как упростить запрос???

Тема в разделе "MySQL", создана пользователем jora, 17 сен 2013.

  1. jora

    jora Новичок

    С нами с:
    9 сен 2013
    Сообщения:
    19
    Симпатии:
    0
    Код (Text):
    1.  
    2.  
    3. $post=$this->db->fetch_array_all("SELECT * FROM `post` ORDER BY `id` DESC LIMIT 0, 10;");
    4.  
    5. $type_1=$this->db->fetch_array_all("SELECT COUNT(*) FROM `smile` WHERE `post_id` = ".$this->db->quote_($this->id)." AND `enabled` = 1 AND `type_smile` = 1;");
    6.  
    7. $type_2=$this->db->fetch_array_all("SELECT COUNT(*) FROM `smile` WHERE `post_id` = ".$this->db->quote_($this->id)." AND `enabled` = 1 AND `type_smile` = 2;");
    8.  
    9. $type_3=$this->db->fetch_array_all("SELECT COUNT(*) FROM `smile` WHERE `post_id` = ".$this->db->quote_($this->id)." AND `enabled` = 1 AND `type_smile` = 3;");
    Можно ли не отправлять 3 запроса, а выполнить 1 и чтобы ни сказывалось на производительности

    У каждого поста есть 3 смайла:

    :) это хорошо
    -) это нормально
    :( это плохо

    Все голосуют в итоге потом на главной странице нужно будет вывести заголовок поста и 3 смайла с цифрой голосов у каждого смайла, причем пост тоже является смайлом и его нужно будет учитывать

    В итоге считаем

    Допустим на странице нужно вывести 10 последних тем, для каждой темы нужно вывести смайлы и того получается 30 запросов!!!

    Как можно упростить?

    Вот так будет выглядеть

    http://pixs.ru/showimage/testpng_4257106_9084930.png
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    между делом точку с запятой убери из текста запроса.

    Код (Text):
    1. SELECT `type_smile`, COUNT(*) AS `cnt`
    2. FROM `smile`
    3. WHERE `post_id` = :id AND `enabled` = 1
    4. GROUP BY `type_smile`
    выполни это сначала в phpmyadmin чтобы знать как выглядит результат. конечно :id замени на какое-нибудь реальное значение