0

我有下表:

流派
标识 | gNAME
1 | 小说
2 | 非小说类
3 | 喜剧
4 | 恐怖

还有这张表

产品
标识符 | 名称
1 | 每周工作 4 小时
2 | 搞砸了,让我们做吧

然后是分配表:

可分配的
援助 | 标识符 | 身份证
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 2 | 3
5 | 2 | 4

我需要一个返回以下内容的查询:

标识符 | 姓名 | pGENRE
1 | 每周工作 4 小时 | 小说
2 | 搞砸了,让我们做吧| 非小说类

换句话说,我只需要每个产品获得一种类型。我该怎么做呢?

4

1 回答 1

2

正如我在上面的评论中所述,MySQL 表是无序的。如果“第一个”表示您想要最小的流派,则gID可以使用子查询对ASSIGNTABLEby进行分组pID并识别所需的流派:

SELECT    PRODUCTS.*, GENRES.gNAME
FROM      PRODUCTS
  JOIN  ( SELECT pID, MIN(gID) gID FROM ASSIGNTABLE GROUP BY pID ) t USING (pID)
  JOIN    GENRES USING (gID)

sqlfiddle上查看。

于 2012-05-17T07:50:41.047 回答