MySQL неизвестный столбец в предложении where (UNION) - PullRequest
0 голосов
/ 17 мая 2018

У меня следующий запрос:

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.Условия ИЛИ в ответах каждого работают в небольшом масштабе, но не работают с реальной БД с большим количеством данных.

Вот объяснение (для ответа Раджата):

enter image description here

Ответы [ 4 ]

0 голосов
/ 17 мая 2018

ПОПРОБУЙТЕ : Простое соединение с 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

ВЫХОД: http://sqlfiddle.com/#!9/94e556/1

0 голосов
/ 17 мая 2018

Это соответствует вашему желаемому выводу в любом случае.Просто с помощью обычного ИЛИ выберите 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
0 голосов
/ 17 мая 2018
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

попробуйте сейчас

0 голосов
/ 17 мая 2018

попробуйте

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
...