MySQL 子查询不工作
MySQL subquery not working
请问,您可以查看此查询吗?我无法使用子查询检索到正确的值。我相信我的逻辑是不正确的。
我日复一日地努力使这项工作成功,但没有成功。
SQLfiddle 中的 SQL 查询上方有重现错误的注释。
有了这个sketch你可以更好的了解我需要什么
SELECT P.nome, centroide_produto_id, similar_produto_id,
(SELECT preco_venda FROM precos A
WHERE A.produto_id = CL.similar_produto_id
AND A.preco_id = (SELECT Max(preco_id)
FROM precos A2,
cluster_copy3 CL2
WHERE A2.produto_id = A.produto_id
AND A2.produto_id=CL2.similar_produto_id
AND A2.preco_venda = (SELECT Max(preco_venda)
FROM precos A3,
cluster_copy3 CL3
WHERE A3.produto_id = CL3.similar_produto_id
AND CL3.centroide_produto_id = CL.centroide_produto_id))) AS preco_maximo
FROM produtos P,
cluster_copy3 CL
WHERE P.produto_id = CL.centroide_produto_id
AND CL.centroide_produto_id IN (9817, 9816)
#GROUP BY CL.centroide_produto_id
也许您可以尝试这样的操作,在子查询中获取数据并在主查询中分组。
SELECT
t.nome,
t.centroide_produto_id,
t.similar_produto_id,
MAX(t.preco_maximo)
FROM
(
SELECT
P.nome,
centroide_produto_id,
similar_produto_id,
(
SELECT
preco_venda
FROM
precos A
INNER JOIN cluster_copy3 CL2 ON A.produto_id = CL2.similar_produto_id
WHERE
A.produto_id = P.produto_id
ORDER BY
A.preco_id DESC,
A.preco_venda DESC
LIMIT 1
) AS preco_maximo
FROM
produtos P,
cluster_copy3 CL
WHERE
P.produto_id = CL.similar_produto_id
AND CL.centroide_produto_id IN (9817, 9816)
) AS t
GROUP BY
t.centroide_produto_id
请问,您可以查看此查询吗?我无法使用子查询检索到正确的值。我相信我的逻辑是不正确的。
我日复一日地努力使这项工作成功,但没有成功。
SQLfiddle 中的 SQL 查询上方有重现错误的注释。
有了这个sketch你可以更好的了解我需要什么
SELECT P.nome, centroide_produto_id, similar_produto_id,
(SELECT preco_venda FROM precos A
WHERE A.produto_id = CL.similar_produto_id
AND A.preco_id = (SELECT Max(preco_id)
FROM precos A2,
cluster_copy3 CL2
WHERE A2.produto_id = A.produto_id
AND A2.produto_id=CL2.similar_produto_id
AND A2.preco_venda = (SELECT Max(preco_venda)
FROM precos A3,
cluster_copy3 CL3
WHERE A3.produto_id = CL3.similar_produto_id
AND CL3.centroide_produto_id = CL.centroide_produto_id))) AS preco_maximo
FROM produtos P,
cluster_copy3 CL
WHERE P.produto_id = CL.centroide_produto_id
AND CL.centroide_produto_id IN (9817, 9816)
#GROUP BY CL.centroide_produto_id
也许您可以尝试这样的操作,在子查询中获取数据并在主查询中分组。
SELECT
t.nome,
t.centroide_produto_id,
t.similar_produto_id,
MAX(t.preco_maximo)
FROM
(
SELECT
P.nome,
centroide_produto_id,
similar_produto_id,
(
SELECT
preco_venda
FROM
precos A
INNER JOIN cluster_copy3 CL2 ON A.produto_id = CL2.similar_produto_id
WHERE
A.produto_id = P.produto_id
ORDER BY
A.preco_id DESC,
A.preco_venda DESC
LIMIT 1
) AS preco_maximo
FROM
produtos P,
cluster_copy3 CL
WHERE
P.produto_id = CL.similar_produto_id
AND CL.centroide_produto_id IN (9817, 9816)
) AS t
GROUP BY
t.centroide_produto_id