Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > обращение к возвращаемому занчению MySQL 5


Автор: azam 26.8.2008, 16:42
MySQL 5

Мне нужно подставить значение которое возвращается темно-синим кодом в места помеченные красным кодом.
Что-то слышал про то что  к возвращаемому значению обращаться нельзя. Но точно не знаю так ли это 
Как можно обратиться к  rating-у? или все-таки надо повторить темно-синий код в местах помеченных красным цветом?


SELECT l.x, m.x1, m.x2, m.x3, m.x4, m.x5, m.x6, m.x7, m.x8, m.x9, m.x10, m.x11, m.x12, m.x13,
                             (
                                   SELECT (res.vr_count/SUM(ips.vi_count))
                                   FROM sb_vote_results as res, sb_vote_ips as ips
                                   WHERE res.vr_el_id=m.ssr_id AND ips.vi_vr_ids=vote.vr_id
                                   GROUP BY ips.vi_vr_ids
                              ) AS rating

                  FROM tt m, sb_catlinks l, sb_categs c, sb_vote_results AS vote
                  WHERE c.cat_id IN (804)
                  AND c.cat_id = l.link_cat_id
                  AND l.link_el_id = m.ssr_id
                  AND m.ssr_status =0
                  AND m.ssr_show =1
                  AND vote.vr_plugin = "pl_services"
                  AND vote.vr_el_id = m.ssr_id
           AND rating > 0 AND rating < 2
                  GROUP BY m.ssr_id
                  ORDER BY c.cat_left

Автор: Бонифаций 26.8.2008, 17:11
использовать алиасы в WHERE не позволяет стандарт sql. Алиасы можно использовать  в GROUP BY, ORDER BY, или HAVING.

Автор: skyboy 26.8.2008, 17:49
вынеси подзапрос из списка полей. сделай к этому подзапросу join.

Добавлено через 1 минуту
а что в логике запроса мешает вынести таблицы из подзапроса в left join?

Автор: azam 27.8.2008, 09:47
Цитата

вынеси подзапрос из списка полей. сделай к этому подзапросу join.

Добавлено через 1 минуту
а что в логике запроса мешает вынести таблицы из подзапроса в left join?



Что-то у меня не совсем получается. Можно пример как это должно быть.

Автор: azam 27.8.2008, 11:47
Цитата

а что в логике запроса мешает вынести таблицы из подзапроса в left join?


Получилость что-то вроде этого, но все равно не могу избавиться от подзапросов в WHERE. Можно как-нибудь это сделать??????

Код

SELECT l.x, m.x, m.x1, m.x2, m.x3, m.x4, m.x5, m.x6, m.x7, m.x8, m.x9, m.x10, m.x11, m.x11, (res.vr_count/SUM(ips.vi_count))

                  FROM tt m, sb_catlinks l, sb_categs c, sb_vote_results vote, 

sb_vote_results as res left join sb_vote_ips as ips on ips.vi_vr_ids=res.vr_id

                  WHERE c.cat_id IN (804)
                  AND c.cat_id = l.link_cat_id
                  AND l.link_el_id = m.ssr_id
                  AND m.ssr_status =0
                  AND m.ssr_show =1
                  AND vote.vr_plugin = "pl_services"
                  AND vote.vr_el_id = m.ssr_id
                  AND res.vr_el_id=m.ssr_id

 AND                     (
                                   SELECT (res.vr_count/SUM(ips.vi_count))
                                   FROM sb_vote_results as res, sb_vote_ips as ips
                                   WHERE res.vr_el_id=m.ssr_id AND ips.vi_vr_ids=vote.vr_id
                                   GROUP BY ips.vi_vr_ids
                              ) > 0 AND                  (
                                   SELECT (res.vr_count/SUM(ips.vi_count))
                                   FROM sb_vote_results as res, sb_vote_ips as ips
                                   WHERE res.vr_el_id=m.ssr_id AND ips.vi_vr_ids=vote.vr_id
                                   GROUP BY ips.vi_vr_ids
                              ) < 2

                  GROUP BY m.ssr_id, ips.vi_vr_ids
                  ORDER BY c.cat_left

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)