gpt4 book ai didi

PHP/MySQL : Better way to write SELECT query?

转载 作者:行者123 更新时间:2023-11-29 04:13:32 25 4
gpt4 key购买 nike

有没有更好的方法来编写这个查询?

起始点:index.php?IDGruppo=25,48,47&IDFamiglia=845,587,215,444

现在我展开 IDGruppo 和 IDFamiglia 并构建如下查询:

有没有最好的方法?

$sql = "SELECT * FROM catalogo_prodotti cp, catalogo_prodotti_attributi cpa WHERE cp.IDProdotto = cpa.IDProdotto ";

if($IDGruppo || $IDVarianti){

$sql .= "AND ";

foreach($idg as $v)
{

if($IDVarianti){
$i = 1;
foreach($idv as $c)
{
$sql .= "cp.IDGruppo = '". $v ."' AND cp.IDFamiglia = '".$c."' AND cp.Cancellato = '0' AND cp.Acquistabile = '1' ";

if($IDTaglia)
$sql .= "AND cpa.IDFiltro_Taglia = '".$IDTaglia."' ";

if($IDTessuto)
$sql .= "AND cp.Key_IT LIKE '%".$IDTessuto."%' ";

if ( count($idv) != $i ){
$sql .= "OR ";

}
$i++;
}

} else {

$sql .= "cp.IDGruppo = '". $v ."' AND cp.Cancellato = '0' AND cp.Acquistabile = '1' ";

}
if ( count($idg) != $j )
$sql .= "OR ";
$j++;
}

}

$sql .= "GROUP BY cp.IDProdotto LIMIT $offset, ".$this->ipp." ";

if($orderBY)
$sql .= "ORDER BY '".$orderBY."'";

最佳答案

SELECT * 
FROM catalogo_prodotti cp
JOIN catalogo_prodotti_attributi cpa ON cp.IDProdotto = cpa.IDProdotto
AND cp.Acquistabile = '1' AND AND cp.Cancellato = '0'
WHERE
cp.IDGruppo = '33' AND cp.IDFamiglia = '121'
OR cp.IDGruppo = '33' AND cp.IDFamiglia = '123'
OR cp.IDGruppo = '33' AND cp.IDFamiglia = '159'
OR cp.IDGruppo = '33' AND cp.IDFamiglia = '179'
OR cp.IDGruppo = '30' AND cp.IDFamiglia = '121'
OR cp.IDGruppo = '30' AND cp.IDFamiglia = '123'
OR cp.IDGruppo = '30' AND cp.IDFamiglia = '159'
OR cp.IDGruppo = '30' AND cp.IDFamiglia = '179'
OR cp.IDGruppo = '29' AND cp.IDFamiglia = '121'
OR cp.IDGruppo = '29' AND cp.IDFamiglia = '123'
OR cp.IDGruppo = '29' AND cp.IDFamiglia = '159'
OR cp.IDGruppo = '29' AND cp.IDFamiglia = '179'

GROUP BY cp.IDProdotto LIMIT 0, 40

或者可能:

编辑 - 添加括号

SELECT * 
FROM catalogo_prodotti cp
JOIN catalogo_prodotti_attributi cpa ON cp.IDProdotto = cpa.IDProdotto
AND cp.Acquistabile = '1' AND AND cp.Cancellato = '0'
WHERE
(cp.IDGruppo = '33' AND cp.IDFamiglia IN ('121','123','159','179'))
OR (cp.IDGruppo = '30' AND cp.IDFamiglia IN ('121','123','159','179'))
OR (cp.IDGruppo = '29' AND cp.IDFamiglia IN ('121','123','159','179'))

GROUP BY cp.IDProdotto LIMIT 0, 40

关于PHP/MySQL : Better way to write SELECT query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com