[英]Alias of INNER JOIN referred to a column in the field list SQL
我真的為此感到掙扎。
SELECT t1.servizio,
Count(DISTINCT p.pro_id),
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.gender) LIKE '%M' THEN p.pro_id
END) AS 'M',
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.gender) LIKE '%F' THEN p.pro_id
END) AS 'F',
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.in_provincia) LIKE '%Si' THEN
p.pro_id
END) AS 'prov_si',
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.in_provincia) LIKE '%No' THEN
p.pro_id
END) AS 'prov_no',
Count(DISTINCT t1.pronto_request_id),
Count(t2.quote_id)
FROM pro p,
pro_request pr,
request_servizio t1
JOIN (SELECT request_servizio.servizio,
Count(quote_request.quote_id)
FROM request_servizio,
quote_request
WHERE request_servizio.pronto_request_id =
quote_request.pronto_request_id
GROUP BY request_servizio.servizio) AS t2
ON t1.servizio = t2.servizio
WHERE p.pro_id = pr.pro_id
AND pr.pronto_request_id = t1.pronto_request_id
GROUP BY t1.servizio
基本上,我涉及4個表: request_servizio
, pro
, pro_request
和quote_request
。
問題出在最后選擇的列上:
錯誤是“未知列t2.quote_id ...”
但是t2
是t2
的別名。 那么,為什么我會收到此錯誤?
我試圖包括表quote_request
,該表是您可以找到最后一個屬性的表,但是那時我得到了錯誤的匯總。 如何避免這種情況?
先感謝您!
在JOIN中,您使用的子查詢沒有提供quote_id列,這意味着您不能從別名t2引用它,因為在選擇部分的內部子查詢中未提供該別名。 您只能使用內部查詢提供的內容。
我想說將查詢更改為此,因為您似乎已經有了要使用的計數。
SELECT t1.servizio,
Count(DISTINCT p.pro_id),
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.gender) LIKE '%M' THEN p.pro_id
END) AS 'M',
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.gender) LIKE '%F' THEN p.pro_id
END) AS 'F',
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.in_provincia) LIKE '%Si' THEN
p.pro_id
END) AS 'prov_si',
Count(DISTINCT CASE
WHEN Concat(p.pro_id, p.in_provincia) LIKE '%No' THEN
p.pro_id
END) AS 'prov_no',
Count(DISTINCT t1.pronto_request_id),
Count(t2.CountOfQuoteId) --edit here
FROM pro p,
pro_request pr,
request_servizio t1
JOIN (SELECT request_servizio.servizio,
Count(quote_request.quote_id) AS CountOfQuoteId --edit here
FROM request_servizio,
quote_request
WHERE request_servizio.pronto_request_id =
quote_request.pronto_request_id
GROUP BY request_servizio.servizio) AS t2
ON t1.servizio = t2.servizio
WHERE p.pro_id = pr.pro_id
AND pr.pronto_request_id = t1.pronto_request_id
GROUP BY t1.servizio
您也可以將這些連接更改為較新的標准,它更干凈,更易於使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.