2016-01-13 3 views
0

Я продолжаю получать синтаксическую ошибку с этим запросом. Я пытаюсь выработать количество строк, где:Синтаксическая ошибка Mysql для запроса левого соединения

1) столбец earnings_campaign_free_id = 43

2) столбец earnings_campaign_paid_id = 43

Так два выхода: paid_views, free_views

SELECT 

cp.campaign_paid AS paid_views 
cf.campaign_free AS free_views 

FROM 

(
    SELECT COUNT(earning_paid_campaign_id) AS campaign_paid 
    FROM earnings 
    WHERE earning_paid_campaign_id = 43 
) cp 

LEFT JOIN 

(
    SELECT COUNT(earning_free_campaign_id) AS campaign_free 
    FROM earnings 
    WHERE earning_free_campaign_id = 43 
) cf 

ON cf.earning_campaign_free_id = cp.earning_paid_campaign_id 

Это ошибка:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use

near 'cf.campaign_free AS free_views

FROM

( SELECT COUNT(earning_paid_campaign_i' at line 4

Как Я исправляю эту ошибку?

+3

вы muss a ',' после 'AS paid_views' – Jens

ответ

2

Попробуйте это.

SELECT 

cp.campaign_paid AS paid_views, 
cf.campaign_free AS free_views 

FROM 

(
    SELECT earning_paid_campaign_id,COUNT(earning_paid_campaign_id) AS campaign_paid 
    FROM earnings 
    WHERE earning_paid_campaign_id = 43 
) cp 

LEFT JOIN 

(
    SELECT earning_campaign_free_id,COUNT(earning_free_campaign_id) AS campaign_free 
    FROM earnings 
    WHERE earning_free_campaign_id = 43 
) cf 

ON cf.earning_campaign_free_id = cp.earning_paid_campaign_id 

Вы пытаетесь присоединиться основу ON cf.earning_campaign_free_id = cp.earning_paid_campaign_id, но когда вы пишете sub query то mysql создать temporary таблицу, и вы не выбрать этот идентификатор. поэтому возникает ошибка

+1

Вам также не хватает запятой. Дает ошибку :) –

+0

где я пропустил это? –

+1

@rohit Я исправил его, спасибо, мой вопрос правильный :) –

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