doutui4649 2011-06-16 13:42
浏览 13
已采纳

有没有办法将这3个查询合二为一

I have this code which is really not the prettiest and the most efficient. The code works but i feel like there is way to avoid all the looping and combine these queries and make possibly one array. I was just wondering if anyone had any pointers on how to improve this

$sql = "SELECT p.image, group_concat(pi.image) as additional_images 
FROM product as p 
JOIN product_image as pi on pi.product_id=p.product_id 
WHERE p.product_id = '{$product['standard']['product_id']}'";
$result = mysql_query($sql);
$images_before = mysql_fetch_assoc($result);
$images = array();
if($images_before['additional_images'] != ""){
$images = explode(",", $images_before['additional_images']);
}
array_push($images, $images_before['image']);
$sql2 = "SELECT p.image, group_concat(pi.image) as additional_images 
FROM product as p 
JOIN product_image as pi on pi.product_id=p.product_id 
WHERE p.product_id = '{$product['professional']['product_id']}'";
$result2 = mysql_query($sql2);
$images_before2 = mysql_fetch_assoc($result2);
$images2 = array();
if($images_before2['additional_images'] != ""){
$images2 = explode(",", $images_before2['additional_images']);
}
array_push($images2, $images_before2['image']);
$sql3 = "SELECT p.image, group_concat(pi.image) as additional_images 
FROM product as p 
JOIN product_image as pi on pi.product_id=p.product_id 
WHERE p.product_id = '{$product['premium']['product_id']}'";
$result3 = mysql_query($sql3);
$images_before3 = mysql_fetch_assoc($result3);
$images3 = array();
if($images_before3['additional_images'] != ""){
$images3 = explode(",", $images_before3['additional_images']);
}
array_push($images3, $images_before3['image']);
$counter = 0;
foreach($images as $image) {
      if ($counter == 0) {
          echo "<a id='show_{$product['standard']['product_id']}' style='display:none;' href='http://somesite.com/shop_possystems/image/{$image}' rel='prettyPhoto[show_{$product['standard']['product_id']}]'></a>";
                $counter++;
      }else{
        echo "<a style='display:none;' href='http://somesite.com/shop_possystems/image/{$image}' rel='prettyPhoto[show_{$product['standard']['product_id']}]'></a>";
            $counter++;
        }
}

$counter2 = 0;
  foreach($images2 as $image) {
        if ($counter2 == 0) {
            echo "<a id='show_{$product['professional']['product_id']}' style='display:none;' href='http://somesite.com/shop_possystems/image/{$image}' rel='prettyPhoto[show_{$product['professional']['product_id']}]'></a>";
                    $counter2++;
        }else{
          echo "<a style='display:none;' href='http://somesite.com/shop_possystems/image/{$image}' rel='prettyPhoto[show_{$product['professional']['product_id']}]'></a>";
                $counter2++;
            }
}
$counter3 = 0;
    foreach($images3 as $image) {
          if ($counter3 == 0) {
              echo "<a id='show_{$product['premium']['product_id']}' style='display:none;' href='http://somesite.com/shop_possystems/image/{$image}' rel='prettyPhoto[show_{$product['premium']['product_id']}]'></a>";
                        $counter3++;
          }else{
            echo "<a style='display:none;' href='http://somesite.com/shop_possystems/image/{$image}' rel='prettyPhoto[show_{$product['premium']['product_id']}]'></a>";
                    $counter3++;
                }
    }
?>
  • 写回答

3条回答 默认 最新

  • dosryjij88555 2011-06-16 13:48
    关注

    Instead of using where p.product_id = <value>, use WHERE IN syntax:

    $sql = "SELECT  ...
    WHERE p.product_id IN (
      {$product['standard']['product_id']},
      {$product['professional']['product_id']}, 
      {$product['premium']['product_id']}
    )";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探