2011-08-10 270 views
1

我似乎无法弄清楚如何创建一个SELECT语句来对产品进行分组,并在一种产品类型下显示产品。Mysql从2表中选择

我有一张叫做地板的表格,其中包含15种不同的地板产品和一张名为floortypes的表格,其中包含8种不同的产品类型(ftid)和产品图片。 15个产品中的每一个都有一个floortype,它定义了它的类型。有些产品几乎相同,但测量结果不同,但它给出了不同的说明。

例子:

Product: Product 1 Product type: 1 
Product: Product 2 Product type: 1 
Product: Product 3 Product type: 2 
Product: Product 4 Product type: 2 
Product: Product 5 Product type: 3 
Product: Product 6 Product type: 4 

我想要的是正在一个产品组要显示与1个产品形象产品

Producttype 1 image 
Product 1 description 
Product 2 description 

Producttype 2 image 
Product 3 description 
Product 4 description 

Producttype 3 image 
Product 5 description 

Producttype 4 image 
Product 6 description 

我希望有人能帮帮我!

编辑

我用它完美的作品你的第一个例子。 这是我的最终代码:

$sql = SQLHandling::SQLquery("SELECT A.fid, A.floorname, A.desc_dk, A.floortype, B.prodimage, GROUP_CONCAT(A.desc_dk SEPARATOR '|') AS descr, GROUP_CONCAT(A.floorname SEPARATOR '|') AS fname FROM floors A JOIN floortypes B ON A.floortype = B.ftid GROUP BY A.floortype, B.prodimage"); 

,然后我while循环:

$counter = 0; 

while($row = mysql_fetch_array($sql)) { 

    $delimiter = "|"; 
    $descr = explode($delimiter, $row["descr"]); 
    $fname = explode($delimiter, $row["fname"]); 

    $markers["###FLOOR###"] .= '<div style="float: left; width: 200px; height: 425px; margin: 0px 10px 0px 10px; vertical-align: text-top; text-align: left;">';  
    $markers["###FLOOR###"] .= '<p><a href="index.php?page=sfp&room='. $_GET["room"] .'&floor='. $row["floorname"] .'&wall='. $_GET["wall"] .'&envi='. $_GET["envi"] .'&fpanel='. $_GET["fpanel"] .'"><img src="images/floors/'. $row["prodimage"] .'.jpg" width="200" /></a></p>'; 

    for ($i = 0; $i < count($descr); $i++) { 
     $markers["###FLOOR###"] .= '<p><a href="index.php?page=sfp&room='. $_GET["room"] .'&floor='. $fname[$i] .'&wall='. $_GET["wall"] .'&envi='. $_GET["envi"] .'&fpanel='. $_GET["fpanel"] .'">'. $descr[$i].'</a></p>'; 
    } 

    $markers["###FLOOR###"] .= '</div>'; 

    if (++$counter % 4 == 0) { 
     $markers["###FLOOR###"] .= '<div style="clear: both;">&nbsp;</div>'; 
    } 
} 

给了我正是我一直在寻找!

感谢您的帮助!非常感激! :)

+0

你有什么这么远吗? – Pelshoff

回答

0

也许你只是在找这个?

SELECT B.ftid, B.prodimage, A.fid, A.floorname, A.desc_dk  
FROM floors A JOIN floortypes B 
ON  A.floortype = B.ftid 

这会给一个结果如下,

producttype1, pt1image, product1 id, product1 name, product1 descriptin 
producttype1, pt1image, product2 id, product2 name, product2 descriptin 
producttype2, pt2image, product3 id, product3 name, product3 descriptin 
producttype2, pt2image, product4 id, product4 name, product4 descriptin 
producttype3, pt3image, product5 id, product5 name, product5 descriptin 
producttype4, pt4image, product6 id, product6 name, product6 descriptin 
+0

我修好了!我的答案在顶部! :) –

+0

好去莫滕!如果你接受了这些帮助你的答案,那将是非常棒的! – Baaju

+0

接受的答案:) –

0
SELECT A.producttype, B.image, Group_concat(<productid> order by <productid> SEPARATOR ',') Products 
FROM PRODUCT A JOIN producttype B 
ON  A.producttype = B.producttype 
GROUP BY A.Producttype, B.image 

与实际替换列 “产品ID”,你的输出就会

  • producttype 1,形象, “产品1,产品2”
  • producttype 2,形象,“产品3,产品4"

....等

希望这有助于

+0

你能帮我多一点吗? :) 我有此: SELECT A.fid,A.floorname,A.desc_dk,A.floortype,B.prodimage,GROUP_CONCAT(A.fid ORDER BY B.ftid SEPARATOR',')FROM floors A JOIN floortypes B ON A.floortype = B.ftid GROUP BY B.prodimage 其中fid是来自楼层的楼层ID,ftid是来自floortypes的id 但它仍然只输出特定类型的一个产品。 –

+0

等一下....如果我把SELECT A.fid,A.floorname,A.desc_dk,A.floortype,B.prodimage,GROUP_CONCAT(A.desc_dk SEPARATOR',')从楼层A加入floortypes B ON A .floortype = B.ftid GROUP BY A.floortype,B.prodimage到PHPMYADMIN它似乎工作正常,所以我只需要弄清楚如何在while循环中正确输出它 –

+0

我忘了GROUP_CONCAT后的AS ...所以如果我把AS descr和echo $ row [“descr”]它出来很好! 感谢您的帮助:) –