[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помощь в запросе
live Uucyc
есть запрос
PHP
mysql_query("SELECT COUNT(*) AS count_comm FROM commentary GROUP BY id_field and category='news' ORDER BY count_comm DESC LIMIT 1")


определил id_news новости, которую больше всего комментировали. Теперь надо составить следующий запрос, который будет определять название новости
PHP
mysql_query("SELECT name FROM news WHERE id='$id_news'")


как можно это объеденить в один запрос? и есть ли смысл?



Спустя 4 минуты, 33 секунды (26.06.2009 - 00:18) waldicom написал(а):
SQL
SELECT COUNT(*) AS count_comm, name FROM commentary GROUP BY id_field and category='news' ORDER BY count_comm DESC LIMIT 1

Так?

Спустя 2 минуты, 35 секунд (26.06.2009 - 00:20) live Uucyc написал(а):
waldicom, нет, что-то типа того
PHP
mysql_query("SELECT news.id, news.name, COUNT(commentary.id_field) AS count_comm FROM commentary LEFT JOIN news ON commentary.id_field=news.id GROUP BY commentary.id_field and commentary.category='news' ORDER BY count_comm DESC LIMIT 1"


но работает неправильно, пока не определил почему

Спустя 41 минута, 58 секунд (26.06.2009 - 01:02) jetistyum написал(а):
SQL
SELECT
news.id,
news.name,
COUNT(commentary.id_field) AS count_comm
FROM commentary LEFT JOIN news
ON
commentary.id_field=news.id
GROUP BY
commentary.id_field AND commentary.category='news'

ORDER BY count_comm DESC LIMIT 1



// тут точно нет ошибки???? GROUP `field` AND field2 = ....
может всетаки WHERE field='test'
GROUP BY , ORDER BY

Спустя 8 часов, 38 минут, 10 секунд (26.06.2009 - 09:40) live Uucyc написал(а):
jetistyum, ага, так сработало
PHP
SELECT news.id, news.name, 
COUNT
(commentary.id_field) AS count_comm 
FROM commentary LEFT JOIN news 
ON commentary
.id_field=news.id
WHERE commentary
.category='news'
GROUP BY 
commentary
.


ниже будет скрипт небольшой моей статистики, может будут какие-нибудь замечания или предложения, т.к. я только учусь
PHP
/* Последние зарегистрированные пользователи, день рождения */
        $resultactive = mysql_query("SELECT COUNT(*) AS count_active
        FROM user"
);
        $result_active = mysql_fetch_array($resultactive);
        $count_user = $result_active['count_active'];
        /*Кол-во комментариев*/
        $resultactive = mysql_query("SELECT COUNT(id) AS count_active
        FROM commentary
        WHERE category='news' or category='photo'"
);
        $result_active = mysql_fetch_array($resultactive);
        $count_comment = $result_active['count_active'];
        /*последние зарегистрировшиеся */
        $date = date("d m Y");
        $resultnewuser = mysql_query("SELECT id, login FROM users WHERE date_registr='$date'");
        /*день рождения*/
        $happy = date("d m");
        $resulthappy = mysql_query("SELECT login
        FROM user
        WHERE happy
        LIKE '$happy%'"
);
        /*часто просматриваемая новость*/
        $resultstatistics = mysql_query("SELECT id, name, view FROM news ORDER BY view DESC LIMIT 1");
        $result_statistics = mysql_fetch_array($resultstatistics);
        /*часто комментируемая*/
        $resultcommentnews = mysql_query("SELECT news.id, news.name, commentary.id_field, COUNT(commentary.id_field)
        AS count_comm
        FROM commentary
        LEFT JOIN news ON commentary.id_field=news.id
        WHERE commentary.category='news'
        GROUP BY commentary.id_field
        ORDER BY count_comm DESC LIMIT 1"
);
        $result_commentnews = mysql_fetch_array($resultcommentnews);
        /*подключение скрипта, отображающего статистику*/
        include("stat/stat.php");

Спустя 3 минуты, 49 секунд (26.06.2009 - 09:44) glock18 написал(а):
Замечание, в общем то, одно только. Неплохо было бы проверять пришло что-то у тебя от mysql. Каждый запрос может ничего не вернуть по каким-либо причинам - лучше это отсеивать простой проверкой того, что вернет mysql_fetch_array.

Спустя 2 минуты, 19 секунд (26.06.2009 - 09:47) live Uucyc написал(а):
желательно проверять так каждый запрос. не важно, уверен в том, что обязательно должно что-то быть?

Спустя 26 секунд (26.06.2009 - 09:47) Kuliev написал(а):
live Uucyc
PHP
/*день рождения*/
        
$happy date("d m");
        
$resulthappy mysql_query("SELECT login
        FROM user
        WHERE happy
        LIKE '$happy%'"
);

Негоже использовать LIKE при выборке даты есть куча функций для работы с датами в mysql используй YEAR() MONTH () в своем запросе.

Спустя 1 минута, 30 секунд (26.06.2009 - 09:48) Kuliev написал(а):
Цитата (live Uucyc @ 26.06.2009 - 11:47)
желательно проверять так каждый запрос. не важно, уверен в том, что обязательно должно что-то быть?

Именно так, это как правило (ЖИ, ШИ пиши с буквой И)

Спустя 7 минут, 2 секунды (26.06.2009 - 09:55) live Uucyc написал(а):
Kuliev, спасибо, но я не могу найти пример использования YEAR() MONTH (). Напиши пожалуйста, чтоб я мог посмотреть и разобраться.

Спустя 4 минуты, 7 секунд (26.06.2009 - 10:00) Kuliev написал(а):

Спустя 2 минуты, 21 секунда (26.06.2009 - 10:02) live Uucyc написал(а):
спасибо

Спустя 1 день, 8 часов, 11 минут, 38 секунд (27.06.2009 - 18:14) live Uucyc написал(а):
Это так, для общего развития.
У меня есть таблица сообщений пользователей. Чтобы узнать кол-во всех и непрочитанных сообщений, я написал 2 запроса. Они отличаются наличием проверки по полю view, если оно равно 1, то непрачитано. Т.к. mysql могуч, может есть возможность все загнать в один запрос?


_____________
Пусть хвалит тебя другой, а не уста твои, - чужой, а не язык твой.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.