Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL子查询不工作_Mysql_Sql_Subquery - Fatal编程技术网

MySQL子查询不工作

MySQL子查询不工作,mysql,sql,subquery,Mysql,Sql,Subquery,请检查一下这个查询好吗?我无法使用子查询检索正确的值。我相信我的逻辑是错误的 我日复一日地努力使这项工作成功,但没有成功 中的SQL查询上方有用于重现错误的注释 有了这个,你可以更好地了解我需要什么 SELECT P.nome, centroide_produto_id, similar_produto_id, (SELECT preco_venda FROM precos A WHERE A.produto_id = CL.similar_produto_id

请检查一下这个查询好吗?我无法使用子查询检索正确的值。我相信我的逻辑是错误的

我日复一日地努力使这项工作成功,但没有成功

中的SQL查询上方有用于重现错误的注释

有了这个,你可以更好地了解我需要什么

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

产品是否总是与自身相似?如果你解释了你想做什么,也许有一个更简单的查询可以完成它。简单的样本数据和期望的结果(在问题中)会有所帮助。而且,对于你想要的是最高的价格,还是最新的价格,似乎有些困惑!谢谢你的回复!今晚我将写更多的解释,因为不幸的是我现在没有时间:-/我需要的是:在SQLFIDLE中,注释第14行并运行查询。返回的preco_maximo是:169、243、149和100。有了MAX(preco_id)和MAX(preco_venda),我需要的正确价格是:centroide9816为243,centroide9817为149