Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Php 在where子句中选择“product_code”,tb_prices.*而不是“=”,然后稍后检索数据。这样,您只能访问数据库两次,而不是1+n次,其中n是来自第一个查询的记录数。我理解您的解释和操作逻辑。。但我不确定我是否理解如何将其付诸实践。如果我请_Php_Mysql_Performance - Fatal编程技术网

Php 在where子句中选择“product_code”,tb_prices.*而不是“=”,然后稍后检索数据。这样,您只能访问数据库两次,而不是1+n次,其中n是来自第一个查询的记录数。我理解您的解释和操作逻辑。。但我不确定我是否理解如何将其付诸实践。如果我请

Php 在where子句中选择“product_code”,tb_prices.*而不是“=”,然后稍后检索数据。这样,您只能访问数据库两次,而不是1+n次,其中n是来自第一个查询的记录数。我理解您的解释和操作逻辑。。但我不确定我是否理解如何将其付诸实践。如果我请,php,mysql,performance,Php,Mysql,Performance,在where子句中选择“product_code”,tb_prices.*而不是“=”,然后稍后检索数据。这样,您只能访问数据库两次,而不是1+n次,其中n是来自第一个查询的记录数。我理解您的解释和操作逻辑。。但我不确定我是否理解如何将其付诸实践。如果我请你给我举个例子,是不是太过分了?这是一个非常有趣的解决方案,我想了解如何利用它!非常感谢你!如果需要多次迭代,将查询放入while迭代可能会导致性能问题!我看到第二个查询的唯一参数是price\u code。如果一个查询没有while,在子句中


在where子句中选择“product_code”,tb_prices.*而不是“=”,然后稍后检索数据。这样,您只能访问数据库两次,而不是1+n次,其中n是来自第一个查询的记录数。我理解您的解释和操作逻辑。。但我不确定我是否理解如何将其付诸实践。如果我请你给我举个例子,是不是太过分了?这是一个非常有趣的解决方案,我想了解如何利用它!非常感谢你!如果需要多次迭代,将查询放入while迭代可能会导致性能问题!我看到第二个查询的唯一参数是
price\u code
。如果一个查询没有while,在子句中有一个
,@Phate01,我知道这不是一个更好的解决方案,但是它也可以很好地进行大量重复(数千项)。你能用
IN
子句给我建议一个更好的解决方案吗?因为,正如您在主要问题中所看到的,我从一个查询(使用JOIN)开始,但它不起作用!我的经验导致了这个解决方案:场景是我执行一个查询,对于从该查询返回的每个项目,我需要执行另一个查询。在您的情况下,对于每个“产品代码”,我需要查询以检索价格数据。您可以根据第一次查询的结果创建产品代码集合。然后只执行第二次查询一次,在where子句中设置“IN”而不是“=”,选择“product_code”,tb_prices.*并稍后检索数据。这样,您只能访问数据库两次,而不是1+n次,其中n是来自第一个查询的记录数。我理解您的解释和操作逻辑。。但我不确定我是否理解如何将其付诸实践。如果我请你给我举个例子,是不是太过分了?这是一个非常有趣的解决方案,我想了解如何利用它!非常感谢你!
$dati = mysqli_query($mysqli_connect, "
SELECT      *  
FROM        $tb_products
LEFT JOIN   $tb_categories ON $tb_products.product_category = $tb_categories.category_id_master
LEFT JOIN   $tb_subcategories ON $tb_products.product_subcategory = $tb_subcategories.subcategory_id_master
LEFT JOIN   $tb_logos ON $tb_products.product_logo = $tb_logos.logo_id_master

LEFT JOIN   $tb_prices ON ( 
            $tb_products.product_brand = $tb_prices.price_brand
            AND $tb_products.product_code = $tb_prices.price_code
            AND $tb_prices.price_validity = (
                SELECT  MAX($tb_prices.price_validity) 
                FROM    $tb_prices 
                WHERE   $tb_prices.price_validity<=DATE_ADD(CURDATE(), INTERVAL +0 DAY)
                        AND $tb_products.product_code = $tb_prices.price_code
            )
        )

WHERE       $tb_products.product_language='$activeLanguage' AND $tb_products.product_category!=0
GROUP BY    $tb_products.product_code
ORDER BY    $tb_products.product_brand, $tb_categories.category_rank, $tb_subcategories.subcategory_rank, $tb_products.product_subcategory, $tb_products.product_rank
");
$dati = mysqli_query($mysqli_connect, "
SELECT      *  
FROM        $tb_products
LEFT JOIN   $tb_categories ON $tb_products.product_category = $tb_categories.category_id_master
LEFT JOIN   $tb_subcategories ON $tb_products.product_subcategory = $tb_subcategories.subcategory_id_master
LEFT JOIN   $tb_logos ON $tb_products.product_logo = $tb_logos.logo_id_master

WHERE       $tb_products.product_language='$activeLanguage' AND $tb_products.product_category!=0
GROUP BY    $tb_products.product_code
ORDER BY    $tb_products.product_brand, $tb_categories.category_rank, $tb_subcategories.subcategory_rank, $tb_products.product_subcategory, $tb_products.product_rank
");
+----------------+-------------+
| price_id       | int(3)      |
| price_brand    | varchar(5)  |
| price_code     | varchar(50) |
| price_value    | float(10,2) |
| price_validity | date        |
| price_language | varchar(2)  |
+----------------+-------------+
$dati = mysqli_query($mysqli_connect, "
SELECT      *  
FROM        $tb_products
LEFT JOIN   $tb_categories ON $tb_products.product_category =     $tb_categories.category_id_master
LEFT JOIN   $tb_subcategories ON $tb_products.product_subcategory =     $tb_subcategories.subcategory_id_master
LEFT JOIN   $tb_logos ON $tb_products.product_logo = $tb_logos.logo_id_master

WHERE       $tb_products.product_language='$activeLanguage' AND     $tb_products.product_category!=0
GROUP BY    $tb_products.product_code
ORDER BY    $tb_products.product_brand, $tb_categories.category_rank,     $tb_subcategories.subcategory_rank, $tb_products.product_subcategory,     $tb_products.product_rank
");
while ($array = mysqli_fetch_array($dati)) {

    $code = $array['product_code'];

    $dati_prices = mysqli_query($mysqli_connect, "
    SELECT  * 
    FROM    $tb_prices 
    WHERE   $tb_prices.price_brand = '$brand' AND $tb_prices.price_code = '$code' AND $tb_prices.price_validity = (
            SELECT  MAX($tb_prices.price_validity) 
            FROM    $tb_prices 
            WHERE   $tb_prices.price_validity<=DATE_ADD(CURDATE(), INTERVAL +0 DAY) AND $tb_prices.price_code = '$code'
    )
    GROUP BY    $tb_prices.price_code           
    ") ;

}