Как построить динамический запрос во время выполнения в MySQL PHP? - PullRequest
0 голосов
/ 21 мая 2011

Я не знаю, как классифицировать этот вопрос.Неопределенно, речь идет об использовании вычисленного значения в предложении WHERE запроса mysql, выполняемого с использованием сценария php.

Вот сценарий - у меня есть таблица mysql со структурой, подобной этой: table_id [int], item_id [int], item_rating [int] Теперь столбец item_rating может иметь значение «1» или «0».Столбец table_id имеет значение auto_increment, а столбец item_id также может иметь повторяющиеся значения.

Таким образом, типичная таблица будет выглядеть ниже -

table_id item_id item_rating
1           item1     1
2           item5     0
3           item1     1
4           item1     1
5           item5     1
6           item1     0

Что я намерен сделать для каждого item_id, я считаю количество item_rating = 1 и item_rating = 0, а затем беру разницу значений item_rating, чтобы получить окончательный рейтинг для этого элемента (final_item_rating = item_rating (со значением = 1) - item_rating (со значением = 0)).

Теперь проблема: у меня есть скрипт php, который берет значения из этих таблиц, а затем отображает детали элемента, упорядоченные по значению "final_item_rating" - что-то вроде: select * from order_name table_namem final_item_rating desc

Единственная проблема в том, что этот final_item_rating не является столбцом сам по себе и фактически основан на значении времени выполнения запроса, как мне построить запрос?

надеюсь, у меня ясный вопрос:)

Ответы [ 2 ]

2 голосов
/ 21 мая 2011

Этот запрос может вам помочь:

SELECT sum(item_rating) AS SumRatings
FROM table_name
WHERE item_rating=1
GROUP BY item_id
ORDER BY SumRatings; 
0 голосов
/ 21 мая 2011

Этот запрос суммирует рейтинги и упорядочивает результат с самым высоким рейтингом сверху:

select  item_id
,       sum(case when item_rating = 1 then 1 else -1 end) as rating
from    YourTable
group by
        item_id
order by
        sum(case when item_rating = 1 then 1 else -1 end) desc
...