一个简单的mySQL语句要问

風吟月*_*風吟月 1 php mysql

我有一个关于mysql的问题,我正在创建一个供应商页面,要求列出所有供应商的详细信息及其产品(随机选择每个供应商的3个产品),所以我们必须加入2个表,一个是供应商,另一个是产品,我可以知道如何在单个mysql语句中呈现它们吗?

table1 - 供应商

id      corp_name      product_count
---------------------------------------
AD0728   John Smith     187
AD0729   JayJay         1983
Run Code Online (Sandbox Code Playgroud)

table2 - 产品

pid      cid        p_name      quantity
---------------------------------------
1      AD0728     Body Shampoo     10
2      AD0728     glass            10
3      AD0728     pen              10
4      AD0728     pencil           10
5      AD0728     eraser           10
6      AD0728     speaker          10
7      AD0729     monitor          10
8      AD0729     keyboard         10
9      AD0729     mouse            10
10     AD0729     processor        10
11     AD0729     box              10
12     AD0729     sunglass         10
Run Code Online (Sandbox Code Playgroud)

产量

id      corp_name      pid          p_name          quantity
----------------------------------------------------------------
AD0728   John Smith     1           Body Shampoo       10
AD0728   John Smith     2           glass              10
AD0728   John Smith     3           pen                10
AD0729   JayJay         10          processor          10
AD0729   JayJay         11          box                10
AD0729   JayJay         12          sunglass           10
Run Code Online (Sandbox Code Playgroud)

感谢大家.

Tim*_*ter 6

对于SQL Server 2005或更高版本,您可以使用ORDER BY NEWID()随机顺序,您可以使用ROW_NUMBER以获取您的分区:

WITH CTE AS
(
   SELECT 
       s.id, s.corp_name, p.pid, p.p_name, p.quantity
     , RN = ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY NEWID())
    FROM suppliers s
    INNER JOIN products p ON s.id = p.cid
)
SELECT id, corp_name, pid, p_name, quantity
FROM CTE WHERE RN <= 3
Run Code Online (Sandbox Code Playgroud)

这是小提琴(感谢@MahmoudGamal):http://www.sqlfiddle.com/#!3/a26c6/17/0