簡體   English   中英

Mysql SELECT 來自 2 個表

[英]Mysql SELECT from 2 table

我似乎無法弄清楚如何制作 SELECT 聲明,將產品分組並在一種產品類型下顯示產品。

我有一張名為 floor 的表格,其中包含 15 種不同的地板產品,還有一張名為 floortypes 的表格,其中包含 8 種不同的產品類型 (ftid) 和一張產品圖片。 15 種產品中的每一種都有一個地板類型,用於定義它是哪種類型。 有些產品幾乎相同,但尺寸不同,但它給產品提供了不同的描述。

例子:

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

給了我我想要的東西!

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

將“productid”替換為實際列,您的 output 將是

  • 產品類型 1,圖像,“產品 1,產品 2”
  • 產品類型 2,圖像,“產品 3,產品 4”

.... ETC

希望這可以幫助

也許你只是在尋找這個?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM