INNER JOIN 的别名引用了字段列表中的列 SQL
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 个 table:request_servizio
、pro
、pro_request
和 quote_request
。
最后选择的列有问题:
the error is "unknown column t2.quote_id..."
但是 t2
是连接的别名。那为什么我会收到这个错误?
我试图包含 table quote_request
,您可以在其中找到最后一个属性,但我得到了错误的聚合。如何避免这种情况?
提前致谢!
在 JOIN 中,您使用的子查询没有提供列 quote_id,这意味着您不能从别名 t2 引用它,因为它没有在 [=18] 的内部子查询中提供=] 部分。您只能使用您从内部查询中提供的内容。
我会说将查询更改为此,因为您似乎已经有了要使用的计数。
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
您还可以将这些联接更改为更新的标准,它更简洁、更易于使用。
我真的很纠结这个。
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 个 table:request_servizio
、pro
、pro_request
和 quote_request
。
最后选择的列有问题:
the error is "unknown column t2.quote_id..."
但是 t2
是连接的别名。那为什么我会收到这个错误?
我试图包含 table quote_request
,您可以在其中找到最后一个属性,但我得到了错误的聚合。如何避免这种情况?
提前致谢!
在 JOIN 中,您使用的子查询没有提供列 quote_id,这意味着您不能从别名 t2 引用它,因为它没有在 [=18] 的内部子查询中提供=] 部分。您只能使用您从内部查询中提供的内容。
我会说将查询更改为此,因为您似乎已经有了要使用的计数。
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
您还可以将这些联接更改为更新的标准,它更简洁、更易于使用。