Lid |
|
Beste,
ik heb een query waarbij ik alle producten ophaal van een bepaald merk. Binnen dit merk zijn er zes collecties. Ik sorteer op collectie omdat ik per collectie begin met een visual en daarna de producten pas.
Het probleem nu is, dat het op mobiel te zwaar word. Wat ik dus graag wil is de query aanpassen zodat deze per collectie maar 3 resultaten ophaalt.
Kan dit en zo ja hoe kan ik dit voor elkaar krijgen? ik heb wel het e.e.a. op internet gevonden maar dit ging mijn petje te boven haha. Misschien dat iemand een makkelijke manier weet.
Even een stukje voorbeeld code:
while($fetch = mysql_fetch_assoc($cmd))
{
/**
* IF NO IMAGE YET DISPLAY IT
**/
if(!in_array($fetch['ProdCategoryID'], $done))
{
// we know we have to start with a visual, but if we have a
// pre-leading visual we have to start a new row so check
if($num >= 1)
{
echo '</div>
<div class="shop_show_more">
<div class="collection" style="color:'.$colors[($num-1)].'">
'.translater(idToName($fetch['ProdCategoryID'], $_SESSION['pLanguage'])).'
</div>
<a href="#" class="openUp" title="Meer weergeven" onclick="openUp(\''.($num-1).'\'); return false;">
<div class="btn" id="btn-info-'.$x.'" style="background-color:'.$colors[($num-1)].'">
Meer weergeven
</div>
</a>
</div>
<div class="shop_ribbon">
<img src="'.$ribbons[($num-1)].'" alt="Tommy Hilfiger Ribbon" />
</div>
<div class="shop_fluid shop_fixed_height" id="shop_fluid_'.($num).'">
<div id="smooth_'.$num.'"></div>
<div class="shop_showoff">
<img src="'.$images[$num].'" alt="" align="left" class="showoff" />
</div>';
}
// this is the very first visual so we can just throw it
// out here and display it
else
{
echo '<div class="shop_fluid shop_fixed_height" id="shop_fluid_'.$num.'">
<div id="smooth_'.$num.'"></div>
<div class="shop_showoff">
<img src="'.$images[$num].'" alt="" align="left" class="showoff" />
</div>';
}
$num++;
$done[] = $fetch['ProdCategoryID'];
}
// hier worden de producten weergegeven
$product = new Product($variabele);
$product->blablabla;
}
{ /** * IF NO IMAGE YET DISPLAY IT **/ if(!in_array($fetch['ProdCategoryID'], $done)) { // we know we have to start with a visual, but if we have a // pre-leading visual we have to start a new row so check if($num >= 1) { <div class="shop_show_more"> <div class="collection" style="color:'.$colors[($num-1)].'"> '.translater(idToName($fetch['ProdCategoryID'], $_SESSION['pLanguage'])).' </div> <a href="#" class="openUp" title="Meer weergeven" onclick="openUp(\''.($num-1).'\'); return false;"> <div class="btn" id="btn-info-'.$x.'" style="background-color:'.$colors[($num-1)].'"> Meer weergeven </div> </a> </div> <div class="shop_ribbon"> <img src="'.$ribbons[($num-1)].'" alt="Tommy Hilfiger Ribbon" /> </div> <div class="shop_fluid shop_fixed_height" id="shop_fluid_'.($num).'"> <div id="smooth_'.$num.'"></div> <div class="shop_showoff"> <img src="'.$images[$num].'" alt="" align="left" class="showoff" /> </div>'; } // this is the very first visual so we can just throw it // out here and display it else { echo '<div class="shop_fluid shop_fixed_height" id="shop_fluid_'.$num.'"> <div id="smooth_'.$num.'"></div> <div class="shop_showoff"> <img src="'.$images[$num].'" alt="" align="left" class="showoff" /> </div>'; } $num++; $done[] = $fetch['ProdCategoryID']; } // hier worden de producten weergegeven $product = new Product($variabele); $product->blablabla; }
Stel dus dat ik het volgende heb:
20 shirts binnen collectie "mannen"
10 shirts binnen collectie "vrouwen"
80 shirts binnen collectie "zomer"
50 shirts binnen collectie "winter"
In plaats van 160 producten weer te geven, wil ik per collectie maar 3 producten selecteren.
Ik wil dit graag in één query doen zonder weer subqueries te gebruiken omdat dit de snelheid weer tegen gaat zitten.
Ik hoop dat ik het zo een beetje goed heb uitgelegd
Mijn huidige query:
$query = 'SELECT p.ProductNumber, p.assign_breda, p.lock_breda, ((p.nQtyAvailable + p.AvailableFromSupplier + nQtyAvailable_breda + p.nQtyAvailable_shop)> 0) as inVoorraad, pd.product_id,
p.id, p.ProductType,p.ProductNumber, p.newcollection , p.ItemName, p.ItemNameSub, p.BrandID,
p.nQtyAvailable,p.AvailableFromSupplier,p.nQtyAvailable_shop,p.nQtyAvailable_breda, p.Diameter, p.ProdCategoryID,
p.SpecialOfferMIT,p.SpecialOfferPrice, p.InternetPrice,p.HighVAT, p.show_mm ,p.Diameter, p.for_men, p.for_women, p.for_girls, p.for_boys, p.BandSize'.$sql_base.'
FROM Products AS p
INNER JOIN products_domains AS pd
ON
p.id = pd.product_id
LEFT JOIN NewCollection nc
on nc.id = p.newcollection
LEFT JOIN brandpage_product_sort bps
on bps.pid = p.id
WHERE
pd.domain_id = "'.mysql_real_escape_string($g_iDomainID).'"
AND (
ProductType = 1
AND
BrandID = "'.mysql_real_escape_string($brandid).'"
AND
p.newcollection != 7)
ORDER BY ProdCategoryID';
$query = 'SELECT p.ProductNumber, p.assign_breda, p.lock_breda, ((p.nQtyAvailable + p.AvailableFromSupplier + nQtyAvailable_breda + p.nQtyAvailable_shop)> 0) as inVoorraad, pd.product_id, p.id, p.ProductType,p.ProductNumber, p.newcollection , p.ItemName, p.ItemNameSub, p.BrandID, p.nQtyAvailable,p.AvailableFromSupplier,p.nQtyAvailable_shop,p.nQtyAvailable_breda, p.Diameter, p.ProdCategoryID, p.SpecialOfferMIT,p.SpecialOfferPrice, p.InternetPrice,p.HighVAT, p.show_mm ,p.Diameter, p.for_men, p.for_women, p.for_girls, p.for_boys, p.BandSize'.$sql_base.' FROM Products AS p INNER JOIN products_domains AS pd ON p.id = pd.product_id LEFT JOIN NewCollection nc on nc.id = p.newcollection LEFT JOIN brandpage_product_sort bps on bps.pid = p.id WHERE pd.domain_id = "'.mysql_real_escape_string($g_iDomainID).'" AND ( ProductType = 1 AND BrandID = "'.mysql_real_escape_string($brandid).'" AND p.newcollection != 7) ORDER BY ProdCategoryID';
|