SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.01.2010 00:27:03

accent-rus
Участник
Зарегистрирован: 27.01.2010
Сообщений: 6

Помогите плиз, подкоректировать запрос.

Опыта работы с запросами у меня нет, вот и прошу "добрых програмеров" помочь.

впринцепе вроде понимаю как должно все работать, никак не могу добавить вывод VOTE(оценку)

вот сам запрос

PHP код:

$query = "SELECT DISTINCT  relation.itemid, relation.catid, title, hits, image, icon ".

//                ", SUM(vote) / COUNT(*) AS votingResult" .

                            "FROM `#__sobi2_cat_items_relations` AS relation " .
                            "LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
           
//                "LEFT JOIN `#__sobi2_plugin_reviews` AS rev ON items.itemid = rev.itemid ".

                            "WHERE (`published` = '1' AND items.itemid IN({$query}) {$from_catid}) " .
                            "GROUP BY items.itemid ".
                            "ORDER BY {$orderBy} ".
                            "LIMIT {$limit}";

Закоментированые строки как видете - это я пытался к запросу добавить еще и оценку
а оно мне ошибку лупит

помогите плиз его правильно сделать

Неактивен

 

#2 27.01.2010 00:36:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите плиз, подкоректировать запрос.

Если я правильно понял Ваш замысел, Вы хотите к существующему
запросу добавить таблицу голосов и выводить групповую статистику
по этой присоединенной таблице.

Чтобы сохранилась логика запроса при этом нужно группировать по
всем неаггрегированным полям. Ну и в данном случае, скорее всего,
писать не очень удачно, т.к. в изначальном запросе уже есть
группировка.

Неактивен

 

#3 27.01.2010 00:50:03

accent-rus
Участник
Зарегистрирован: 27.01.2010
Сообщений: 6

Re: Помогите плиз, подкоректировать запрос.

sad
а как мне его сделать

мне надо будет потом вывести вот это:
$database->setQuery ( $query );
$results = $database->loadObjectList ();
$votes = number_format($results->votingResult,1);

помогите плиз

Неактивен

 

#4 27.01.2010 00:51:58

accent-rus
Участник
Зарегистрирован: 27.01.2010
Сообщений: 6

Re: Помогите плиз, подкоректировать запрос.

accent-rus написал:

sad
а как мне его сделать

мне надо будет потом вывести вот это:
$database->setQuery ( $query );
$results = $database->loadObjectList ();
$votes = number_format($results->votingResult,1);

помогите плиз

ну и кромеэтого конечно еще другие поля
в зависимости от itemid
через foreach

Неактивен

 

#5 27.01.2010 13:52:24

accent-rus
Участник
Зарегистрирован: 27.01.2010
Сообщений: 6

Re: Помогите плиз, подкоректировать запрос.

с каждым днем люди стают все добрее и добрее, все так спешат друг другу помочь, что прям не успевают

wink

Неактивен

 

#6 27.01.2010 15:07:45

accent-rus
Участник
Зарегистрирован: 27.01.2010
Сообщений: 6

Re: Помогите плиз, подкоректировать запрос.

$query = "(SELECT DISTINCT relation.itemid, relation.catid, items.published AS published, items.title AS title, items.hits AS hits, items.image AS image, items.icon AS icon ".

                            "FROM `#__sobi2_cat_items_relations` AS relation) " .
                        "UNION ALL".
                            "(SELECT DISTINCT SUM(rev.vote) / COUNT(*) AS votingResult ".
                            "FROM #__sobi2_plugin_reviews AS rev) ".   
                           
                            "LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid = rev.itemid " .

                       
                            "WHERE (`published` = '1' AND items.itemid IN({$query}) {$from_catid}) " .
                       
                            "GROUP BY items.itemid ".
                            "ORDER BY {$orderBy} ".
                            "LIMIT {$limit}";

попробовал так, тоже не работает

Неактивен

 

#7 28.01.2010 17:23:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите плиз, подкоректировать запрос.

1. Без точного знания структуры таблиц запрос написать практически не реально.
2. Добавлять к существующему сложному запросу с группировкой еще одно
объединение и еще десяток группировок — не разумно: будет сильно тормозить.

Если хотите «легко» добавить дополнительное групповое поле — добавьте обычное
и обновляйте его триггерами или периодически.

Неактивен

 

#8 28.01.2010 17:58:40

accent-rus
Участник
Зарегистрирован: 27.01.2010
Сообщений: 6

Re: Помогите плиз, подкоректировать запрос.

я сделал отдельный запрос по итемИД и вроде все нормально работает

спасибо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson