我还是一个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显示了table1(产品)和table2(产品类型)之间的关系。产品“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
此结构将以产品类型的关联数组结尾,相关产品为assoc-sub-arrays,按table1的“ident”排序:
type1 description1
111ab title1 details1
type2 description2
333ab title3 details3
type3 description3
111ab title1 details1
222ab title2 details2
333ab title3 details3
这个数组将被json编码并作为ajax-request的查询结果发送。
我在stackoverflow上阅读了有关JOINing表的线程,但无法生成有效的SELECT结构。也许这不能通过单个查询来完成。我不知道。
拜托,有人能给我一点帮助吗?
答案 0 :(得分: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`