1

Тема: помогите с запросом

есть запрос списка магазинов на сайте, попробую объяснить:
//запрос списка магазинов

$sql = " 
SELECT 
COUNT(db.user_id) as count, 
shop.*, 
usr.name as user_name, 
usr.id as user_id 

FROM ".PREF."users_shop shop 
LEFT OUTER JOIN ".PREF."users usr ON usr.id = shop.user_id 
LEFT OUTER JOIN ".PREF."db db ON (db.user_id = shop.user_id) AND (db.status=1 ".$shop_categories.") 
WHERE shop.status=1 
".$shop_regions." 
".$shop_categories." 
".$shop_payed." 
GROUP by shop.id 
ORDER by id desc 
";

тоесть они выводятся из базы по id (ORDER by id desc) , из таблицы FROM ".PREF."users_shop , если я правильно понимаю
я добавил к магазинам рейтинг +/- который пишется в таблицу voting (без прификса общеего), как к этому запросу добавить чтобы он делал то что делает сейчас без ущерба, но еще обходил таблицу voting и сортировал магазины не по id , а по полю vote из таблицы voting тоесть как я понимаю ORDER by vote desc
Помогите плз, методом тыка пробовал неполучается , не шарю в этом вопросе настолько чтобы самому решить! Спасибо!

Отредактировано SERblY (2017-08-10 14:35:12)

2

Re: помогите с запросом

Если в таблице voting есть поле идентификатора из таблицы ".PREF."users_shop, то объединение таблиц делает так же, как здесь, через JOIN:
LEFT OUTER JOIN ".PREF."users usr ON usr.id = shop.user_id

Как только таблицу сможете объединить - выборку можно делать с сортировкой по любому полю из таблицы voting.

ВКонтакте Facebook Twitter

3

Re: помогите с запросом

в таблице нет поля идентифекатора как user_shop там есть поле item где хранится дентификатор магазина к которому голосуют поле vote где кол во голосов по ним то и надо выстраивать сортировку, в самом скрипте идентификатор магазина в голосовании пишется так

мб это важно и вы об этом спрашивали (про связку) само голосование выводится так <div class="vot_updown2" id="vt_{%$shop.id%}"></div>
тоесть в таблице voting есть еще поле item где пишется магазины по id тоесть такого вида vt_1  vt_2  и к ним в поле vote кол-во голосов...
vt_  это в таблице голосование к которому плюсуется {%$shop.id%} из таблицы магазинов я так понимаю  vt_{%$shop.id%}

4

Re: помогите с запросом

предлагали сделать так

 $sql = "
                SELECT 
                        COUNT(db.user_id) as count,
                    shop.*,
                    usr.name as user_name,
                    usr.id as user_id
                    
                FROM ".PREF."users_shop shop
                join voting on shop.id=concat('vt_',voting.`item`)
                    LEFT OUTER JOIN ".PREF."users usr ON usr.id = shop.user_id
                    LEFT OUTER JOIN ".PREF."db db ON (db.user_id = shop.user_id) AND (db.status=1 ".$shop_categories.")  
                WHERE shop.status=1  
                    ".$shop_regions."
                    ".$shop_categories."
                    ".$shop_payed."
                GROUP by shop.id 
                ORDER by vote desc
                ";

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

5

Re: помогите с запросом

Поищите в таблице voting общий идентификатор с таблицами ".PREF."users или ".PREF."db, иначе объединить таблицы нельзя.

ВКонтакте Facebook Twitter

6

Re: помогите с запросом

прям по названию такого же поля нету, потому что голосование отдельно приделывалось к списку магазинов но id магазина в таблице voting пишется в поле item как писал выше wt_1 это типа shop.id=1 мб пишу неправильно, не шарю, как могу пытаюсь объяснить

7

Re: помогите с запросом

Без единого идентификатора объединить таблицы не получится.

ВКонтакте Facebook Twitter