2013-07-10 2 views
0

я получил три таблицы: http://sqlfiddle.com/#!2/c7317MySQLi один запрос вместо двух (один в то время как цикл вместо в то время как цикл в цикле While)

Я хочу, чтобы получить этот вывод на строку:

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 />'; 
     } 
    } 

, но я хочу сделать это с помощью инструкции подготовки и одного запроса, возможно ли это?

+0

очень возможно, используйте INNER JOIN в своем запросе, чтобы получить все результаты в один запрос, а затем просмотреть результаты. – Rob

+0

может помочь мне с этим? – user2564276

ответ

0

Я думаю, что LEFT JOIN должен быть полезен в этом конкретном случае. Я делаю несколько тестов, я дам вам знать.

+0

ok man, спасибо – user2564276

1

Ваш единственный запрос ниже, я объединил ваши два запроса.

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` 
+0

это только echo один субпродукт, я хочу, чтобы эхо все субпродукты, которые имеют prodictid 1 и т.д. – user2564276

+0

попробуйте еще раз, потому что я обновил запрос – DevZer0

+0

все тот же. – user2564276

 Смежные вопросы

  • Нет связанных вопросов^_^