0

我仍然是一个 SQL 新手。我有三个具有给定结构的表:

table1 (products)
--------------------------------------
id   ident   title   types   desc
--------------------------------------
01   111ab   title1  2       details 1
02   222ab   title2  1       details 2
03   333ab   title3  2       details 3

一个产品可以属于许多产品类型。“类型”列是与产品相关的类型的数量。产品“111ab”属于2种产品类型。

table2 (product-types)
--------------------------
id   type    typedesc
--------------------------
01   type1   description 1
02   type2   description 2
03   type3   description 3


table3 (relations)
-------------------
id   tbl1id  tbl2id
-------------------
01   01      01
02   02      03
03   03      03
04   01      03
05   03      02

表 3 显示了表 1(产品)和表 2(产品类型)之间的关系。产品“111ab”与产品类型“01”和“03”相关。

我想创建一个应该是这样的数据结构:

type-description    prod   title   desc
-------------------------------------------
type1-description1  111ab  title1  details1
type2-description2  333ab  title3  details3
type3-description3  111ab  title1  details1
type3-description3  222ab  title2  details2
type3-description3  333ab  title3  details3

这个结构最终将出现在产品类型的关联数组中,相关产品作为关联子数组,按表 1 的“标识”排序:

type1 description1
        111ab title1 details1

type2 description2
        333ab title3 details3

type3 description3
        111ab title1 details1
        222ab title2 details2
        333ab title3 details3

该数组将被 json 编码并作为 ajax 请求的查询结果发送。

我在 stackoverflow 上阅读了关于 JOINing 表的线程,但无法生成有效的 SELECT 结构。也许这不能通过单个查询来完成。我不知道。

拜托,谁能给我一点帮助?

4

1 回答 1

2

INNER JOIN满足您的要求,

SELECT  a.type, a.typedesc,
        c.ident, c.title,
        c.`desc`
FROM    `product-types` a
        INNER JOIN relations b
            ON a.id = b.tbl2id
        INNER JOIN products c
            ON b.tbl1id = c.id
ORDER BY a.type, a.typedesc

或者

SELECT  CONCAT(a.type, '-',a.typedesc) `type-description`,
        c.ident, c.title,
        c.`desc`
FROM    `product-types` a
        INNER JOIN relations b
            ON a.id = b.tbl2id
        INNER JOIN products c
            ON b.tbl1id = c.id
ORDER BY `type-description`
于 2012-11-25T13:30:54.023 回答