2

这是我的数据样本:

产品
--------------------------------
| product_id PK | 产品名称 |
--------------------------------
| FRT1 | 苹果 |
| FRT2 | 橙色 |
| TXT1 | 丝带 |
--------------------------------

包裹
-------------------------
| package_id PK | 价格 |
-------------------------
| P001 | 1000 |
| P002 | 1500 |
| P003 | 1000 |
-------------------------

package_detail
---------------------------------
| package_id FK | product_id FK |
---------------------------------
| P001 | FRT1 |
| P002 | FRT1 |
| P002 | FRT2 |
| P003 | FRT2 |
---------------------------------

搜索的关键是product_name,所以如果我搜索“Apple”,结果应该是这样的:

------------------------------------------
| package_id | 价格 | num_of_package_dtl |
------------------------------------------
| P001 | 1000 | 1 |
| P002 | 1500 | 2 |
------------------------------------------

我不擅长加入,谁能帮我查询一下?先谢谢啦~

4

2 回答 2

3
SELECT  b.package_id, c.price, d.totalCount
FROM    product a
        INNER JOIN package_detail b 
            ON a.product_ID = b.product_ID
        INNER JOIN package c
            ON b.package_ID = c.package_ID
        INNER JOIN 
        (
          SELECT package_id, COUNT(*) totalCount
          FROM package_detail
          GROUP BY  package_id
        ) d ON d.package_ID = b.package_ID
WHERE a.product_name = 'apple'

SQLFiddle 演示

于 2012-10-24T03:19:21.297 回答
0

像这样的东西:

选择 pd.package_id, p.price, count(*) as num_of_package_dtl from package_detail pd join package p on p.package_id = pd.package_id join Product pt on pt.product_id = pd.product_id where pd.product_name = 'Apple' group by pd.package_id, p.price

于 2012-10-24T03:25:22.687 回答