У меня есть следующий запрос:
select a.clei, a.partNumber,
(
SELECT count(*) FROM
( SELECT * from search_upload_data s where a.clei is not null AND a.clei = s.clei
UNION
SELECT * from search_upload_data s where a.partNumber is not null AND a.partNumber = s.partNumber
) as t1
) as total
from api_analytics_data a
Это бросает ошибку:
Error Code: 1054. Unknown column 'a.clei' in 'where clause'
Я предполагаю, что MySQL не позволит ссылаться на ссылку во внутреннем SQL, но я не уверен, как обойти это.
Мне нужен счетчик из search_upload_data, см. SQL Fiddle здесь: http://sqlfiddle.com/#!9/172ac/2
<================================================= ========================>
ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ
Мне нужно выяснить, как это сделать с UNION. Условия OR в каждом ответе работают в небольшом масштабе, но боятся вниз по фактической БД с большим количеством данных.
Вот объяснение (для ответа Раджата):
ПОПРОБУЙТЕ ЭТО: Простое объединение с OR
и GROUP BY
SELECT a.clei,
a.partNumber,
COUNT(1) tot
FROM api_analytics_data a
LEFT JOIN search_upload_data s ON (a.clei = s.clei OR a.partNumber = s.partNumber)
AND (a.clei is not null OR a.partNumber is not null)
GROUP BY a.clei, a.partNumber
INNER JOIN
вместо LEFT JOIN
и проверьте производительность.
Это в любом случае соответствует вашему желаемому результату. Просто используя обычный ИЛИ, чтобы выбрать либо clei, либо partnumber.
select a.clei, a.partNumber,
(
SELECT count(*) FROM search_upload_data s WHERE
(a.clei is not null AND a.clei = s.clei) OR
(a.partNumber is not null AND a.partNumber = s.partNumber)
) as Total
from api_analytics_data a
попробуй это
select a.clei, a.partNumber,
( SELECT COUNT(1) As Total
from search_upload_data s
where ( a.clei is not null AND a.clei = s.clei )
OR (a.partNumber is not null AND a.partNumber = s.PartNumber)
) as t1
from api_analytics_data a
select a.clei, a.partNumber,
(
SELECT count(s.id) FROM search_upload_data s where (a.clei is not null AND a.clei = s.clei) OR (a.partNumber is not null AND a.partNumber = s.partNumber)
) as Total
from api_analytics_data a
попробуй сейчас