2013-12-18 2 views
1

Я запускаю тест A-B, чтобы узнать, какой стиль страницы может получить больше заказов на продукты и попытаться взвесить одну страницу как «лучше», чем другие, потому что она показывает более часто.Умножение, разделение и добавление в MYSQL

У меня есть 8 столбцов в моей базе данных MYSQL.

  1. Orders_Page_One
  2. Orders_Page_Two
  3. Orders_Page_Three
  4. Visitors_Page_One
  5. Visitors_Page_Two
  6. Visitors_Page_Three
  7. Total_Orders
  8. Total_Visitors

В настоящее время я только работаю запрос как:


$result = mysql_query("SELECT *, (Total_Orders/Total_Visitors) AS order_percent FROM orders WHERE category = clothes ORDER BY order_percent DESC LIMIT 5") or die(mysql_error()); 

Это работает, но

Это позволяет мне показать, какие заказы являются наиболее популярными, но не принимать во внимание, какие страницы они появляются.

Я пробовал:


$result = mysql_query("SELECT *, (Orders_Page_One/Visitors_Page_One) + (Orders_Page_Two/Visitors_Page_Two) + (Orders_Page_Three/Visitors_Page_Three) AS order_percent FROM orders WHERE category = clothes ORDER BY order_percent DESC LIMIT 5") or die(mysql_error()); 

Но это, кажется, не дают точных результатов.

Я также попытался


$result = mysql_query("SELECT *, ((Orders_Page_One/Visitors_Page_One) + (Orders_Page_Two/Visitors_Page_Two) + (Orders_Page_Three/Visitors_Page_Three)) AS order_percent FROM orders WHERE category = clothes ORDER BY order_percent DESC LIMIT 5") or die(mysql_error()); 

Но это дает ошибку синтаксиса.

Предполагая:

Orders Page One = 10 and Visitors Page One = 20 
Orders Page Two = 10 and Visitors Page Two = 40 
Orders Page Three = 10 and Visitors Page Three = 50 

математический результат я хочу бы:

(10/20) + (10/40) + (10/50) 

ИЛИ

0.5 + 0.25 + 0.20 = 0.95 

Любые предложения? Я думаю, что я просто не устанавливаю математику правильно.

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

IE:


    Select (orders_page_1/visitors_page_1) as order_percent_1 from orders 
    Select (orders_page_2/visitors_page_2) as order_percent_2 from orders 
    Select (orders_page_3/visitors_page_3) as order_percent_3 from orders 
    Select (order_percent_1 + order_percent_two + order_percent_3) as order_percent 
    WHERE category = clothes 
    ORDER BY order_percent DESC 

Но не уверен, что на форматирование? Или если это сработает?

$result = mysql_query(" 

SELECT * FROM orders, (
    SELECT (orders_page_1/visitors_page_one) AS ord1 FROM orders WHERE category = 'clothing' ORDER BY ord1 DESC LIMIT 2) AS ord_1, 
     (
    SELECT (orders_page_2/visitors_page_two) AS ord2 FROM orders WHERE category = 'clothing' ORDER BY ord2 DESC LIMIT 2) AS ord_2, 
     (
    SELECT (orders_page_3/visitors_page_3) AS ord3 FROM orders WHERE category = 'clothing' ORDER BY ord3 DESC LIMIT 2) AS ord_3, 

    ORDER BY (ord_1 +ord_2 + ord_3) DESC LIMIT 2") or die(mysql_error()); 

Однако это дает ошибку:

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи 'ORDER BY (ord_1 + ord_2 + ord_3) DESC LIMIT 2' в строке 8

+0

Можете ли вы создать SQL-скрипт для этого? –

+0

Я не знаком с скриптом SQL – user3083472

+1

Нормализации никому? И мы ограничены работой только с вещами, с которыми вы «знакомы»? !?!? ;-) – Strawberry

ответ

1

Одна из возможных проблем является то, что

WHERE category = clothes 

должно быть действительно

WHERE category = 'clothes' 

попробуйте сейчас и посмотрите, что вы получаете.

+0

Одиночные кавычки до сих пор не исправили это. – user3083472

Смежные вопросы