Php MySQLi一个查询而不是两个查询(单while循环而不是while循环中的while循环)
我有三张桌子: 我希望每行获得以下输出:Php MySQLi一个查询而不是两个查询(单while循环而不是while循环中的while循环),php,loops,mysqli,while-loop,Php,Loops,Mysqli,While Loop,我有三张桌子: 我希望每行获得以下输出: ProductId = 1 ProductCode = 1 ProductRetailPrice = 1 SubProductThumb = 1.jpg (the first subproducts thumb, where ProductId = 1) Sub Products of ProductId 1 --------------------------- SubProductId = 1 SubProductPieces = 10
ProductId = 1
ProductCode = 1
ProductRetailPrice = 1
SubProductThumb = 1.jpg (the first subproducts thumb, where ProductId = 1)
Sub Products of ProductId 1
---------------------------
SubProductId = 1
SubProductPieces = 10
SubProductId = 4
SubProductPieces = 40
SubProductId = 7
SubProductPieces = 70
我在MySQL上得到了以下代码:
$show_product_content = mysql_query("
SELECT DISTINCT a.`ProductId`, a.`ProductCode`, a.`ProductRetailPrice`, a.`ProductPrice`, a.`ProductOffer`, a.`ProductTopSeler`, a.`ProductStrass`, a.`ProductStatus`, b.`SubProductThumb`
FROM `Products` as a, `SubProducts` as b
WHERE b.ProductId=a.ProductId
GROUP BY a.`ProductId`
");
while($row = mysql_fetch_array($show_product_content))
{
echo '<br />ProductId = '.$row['ProductId'].'<br />';
echo 'ProductCode = '.$row['ProductCode'].'<br />';
echo 'ProductRetailPrice = '.$row['ProductRetailPrice'].'<br />';
echo 'SubProductThumb = '. $row['SubProductThumb'].'<br /><br />';
$product_id = $row['ProductId'];
$show_sub_product_content = mysql_query("
SELECT SubProductId, SubProductPieces, SubProductStatus, SubProductRingSize6, SubProductRingSize7, SubProductRingSize8, SubProductRingSize9, c1.ColorHex as Color1, c1.ColorName as ColorName1, c2.ColorHex as Color2, c2.ColorName as ColorName2
FROM SubProducts
INNER JOIN Colors c1 ON c1.ColorId=SubProducts.SubProductColor1
INNER JOIN Colors c2 ON c2.ColorId=SubProducts.SubProductColor2
WHERE ProductId='$product_id'
");
echo 'Sub Products of ProductId '.$product_id.'<br />------------------------------------<br />';
while($row = mysql_fetch_array($show_sub_product_content))
{
echo 'SubProductId = '.$row['SubProductId'].'<br />';
echo 'SubProductPieces = '.$row['SubProductPieces'].'<br /><br />';
}
}
$show\u product\u content=mysql\u查询(“
选择不同的a.`ProductId`、a.`ProductCode`、a.`ProductRetailPrice`、a.`ProductPrice`、a.`ProductOffer`、a.`ProductTopSeler`、a.`ProductStrass`、a.`ProductStatus`、b.`SubProductThumb`
从'Products'作为a,从'SubProducts'作为b
其中b.ProductId=a.ProductId
按a.`ProductId分组`
");
而($row=mysql\u fetch\u数组($show\u product\u content))
{
回显“
ProductId=”.$row['ProductId']”。
;
回显“ProductCode=”.$row['ProductCode']。
;
回显“ProductRetailPrice=”.$row['ProductRetailPrice']。
;
回显'SubProductThumb='。$row['SubProductThumb'].
;
$product_id=$row['ProductId'];
$show\u sub\u product\u content=mysql\u查询(“
选择SubProductd、SubProductPieces、SubProductStatus、SubProductRingSize6、SubProductRingSize7、SubProductRingSize8、SubProductRingSize9、c1.ColorHex作为Color1、c1.ColorName作为ColorName1、c2.ColorHex作为Color2、c2.ColorName作为ColorName2
来自子管道
c1上的内部连接颜色c1.ColorId=SubProducts.SubProductColor1
c2上的内部连接颜色c2.ColorId=SubProducts.SubProductColor2
其中ProductId=“$product\U id”
");
echo“ProductId的子产品”。$product_id.
---------------------------------------
;
而($row=mysql\u fetch\u数组($show\u sub\u product\u content))
{
回显“subproductd=”.$row['subproductd']。
;
回显“subproductsPieces=”.$row['subproductsPieces']。
;
}
}
但我想用prepare语句和单个查询来实现这一点,这可能吗?我认为在这种特定情况下,左连接应该很有用。
我正在做一些测试,我会让你知道的。下面是你的单个查询,我结合了你的两个查询
SELECT a.`ProductId`, a.`ProductCode`, a.`ProductRetailPrice`, a.`ProductPrice`, a.`ProductOffer`, a.`ProductTopSeler`, a.`ProductStrass`, a.`ProductStatus`, b.`SubProductThumb`, b.SubProductId, b.SubProductPieces, b.SubProductStatus, b.SubProductRingSize6, b.SubProductRingSize7, b.SubProductRingSize8, b.SubProductRingSize9, c1.ColorHex as Color1, c1.ColorName as ColorName1, c2.ColorHex as Color2, c2.ColorName as ColorName2
FROM `Products` as a, `SubProducts` as b
LEFT JOIN Colors c1 ON c1.ColorId=b.SubProductColor1
LEFT JOIN Colors c2 ON c2.ColorId=b.SubProductColor2
WHERE b.ProductId=a.ProductId
GROUP BY a.`ProductId`
很可能,在查询中使用内部联接将所有结果合并到一个查询中,然后在这些结果中循环。您能帮我吗?这只回显一个子管道,我要回显所有具有ProdicId 1的子管道等