2010-05-07 1 views
1

Мне нужно совместить результаты для двух запросов выбора из двух таблиц представления, из которых я выполняю вычисления. Возможно, есть более простой способ выполнить запрос, используя if ... else - любые указатели?объединение двух операторов select для возврата одного результата

По сути мне нужно все разделить на 'ar.time_ratio' при условии, в SQL запросе 1, и игнорировать, что для запроса 2.

SELECT 
gs.traffic_date, 
gs.domain_group, 
gs.clicks/ar.time_ratio as 'Scaled_clicks', 
gs.visitors/ar.time_ratio as 'scaled_visitors', 
gs.revenue/ar.time_ratio as 'scaled_revenue', 
(gs.revenue/gs.clicks)/ar.time_ratio as 'scaled_average_cpc', 
(gs.clicks)/(gs.visitors)/ar.time_ratio as 'scaled_ctr', 
gs.average_rpm/ar.time_ratio as 'scaled_rpm', 
(((gs.revenue)/(gs.visitors))/ar.time_ratio)*1000 as "Ecpm" 
FROM 
group_stats gs, 
v_active_ratio ar 

WHERE ar.group_id=gs.domain_group 

и

SELECT 
gs.traffic_date, 
gs.domain_group, 
gs.clicks, 
gs.visitors, 
gs.revenue, 
(gs.revenue/gs.clicks) as 'average_cpc', 
(gs.clicks)/(gs.visitors) as 'average_ctr', 
gs.average_rpm, 
((gs.revenue)/(gs.visitors))*1000 as "Ecpm" 
FROM 
group_stats gs, 
v_active_ratio ar 

where not ar.group_id=gs.domain_group 

ответ

6

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

http://dev.mysql.com/doc/refman/5.1/en/union.html

0

UNION предложено выше даст вам все масштабируется результаты, и все немашстабированная данные (второй запрос) в виде отдельных строк.

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

SELECT * FROM ([first-query]) AS scaled 
    INNER JOIN ([second-query]) AS normal 
    ON scaled.traffic_date=normal.traffic_date 
     AND scaled.domain_group=normal.domain_group 

Вместо использования * для выбора всех столбцов может потребоваться явно объявить выбранные столбцы, поскольку столбцы traffice_date и domain_group будут выводиться дважды.