Nejsem si jistý syntaxí PHP, ale můžete udělat následující pseudokód:
allProductsReturnedFromMySQL = QueryYourDatabaseForAllProducts()
Hashtable[productId, List[productSizes]] dropDownsByProduct;
Hashtable[productId, commonProductInformation] uniqueProducts;
foreach (product in allProductsReturnedFromMySQL) {
if product.productId not in uniqueProducts
then add it with the product information that does not vary
if product.productId not in dropDownsByProduct
then add it with an empty list
append the size of this product to the corresponding list in dropDownsByProduct
}
Po této troše logiky budete mít všechny své jedinečné produkty se společnými vlastnostmi pro každý z nich a rozbalovací seznam způsob, jak získat odpovídající velikosti. Pokud byste to chtěli udělat čistě v SQL, abyste minimalizovali přenášená data, můžete udělat něco takového:
-- this would get you your products
select distinct id, property1, property2 from product
-- this would get you your drop downs by product
select id, size from product order by id
Potom můžete vytvořit stejnou rozevírací hashovací tabulku iterací přes druhou sadu výsledků.