将动态行转置为列
Transpose dynamic rows into columns
我有两个table:一个是programs
,另一个是bookprograms
。
programs
table 是您获取程序名称的地方。可以添加或编辑此 table 中的行。
我使用了下面的查询,但没有反映是否有新程序:
SELECT MAX(IF(programs = 'cla', title, NULL)) cla,
MAX(IF(programs = 'csm', title, NULL)) csm
FROM bookprograms
GROUP BY title
结构第table.
╦════════════╦═════════════╗
║ ID ║ Programs ║
╬════════════╬═════════════╣
║ 1 ║ cla ║
║ 2 ║ csm ║
╩════════════╩═════════════╝
第二个table是我存放书籍和对应程序的地方。
╦════════════╦═════════════╗
║ Title ║ Programs ║
╬════════════╬═════════════╣
║ title1 ║ cla ║
║ title2 ║ csm ║
║ title3 ║ cla ║
╩════════════╩═════════════╝
我怎么会得出这个结果?
╦════════════╦═════════════╗
║ cla ║ csm ║
╬════════════╬═════════════╣
║ title1 ║ title ║
║ title3 ║ ║
╩════════════╩═════════════╝
此查询returns您需要的数据,但不是您想要的格式:
SELECT programs, GROUP_CONCAT(title) AS titles
FROM bookprograms
GROUP BY programs
它returns:
programs | titles
----------+---------------
cla | title1,title3
cls | title2
在客户端代码中,您可以将其变形为您需要的结构。 header 单元格的值在字段 programs
中返回。用逗号 (,
) 拆分字段 title
的值,您将获得该列其余部分的数据单元格。对结果集中的每一行重复以获取所需 table.
的所有列
我有两个table:一个是programs
,另一个是bookprograms
。
programs
table 是您获取程序名称的地方。可以添加或编辑此 table 中的行。
我使用了下面的查询,但没有反映是否有新程序:
SELECT MAX(IF(programs = 'cla', title, NULL)) cla,
MAX(IF(programs = 'csm', title, NULL)) csm
FROM bookprograms
GROUP BY title
结构第table.
╦════════════╦═════════════╗
║ ID ║ Programs ║
╬════════════╬═════════════╣
║ 1 ║ cla ║
║ 2 ║ csm ║
╩════════════╩═════════════╝
第二个table是我存放书籍和对应程序的地方。
╦════════════╦═════════════╗
║ Title ║ Programs ║
╬════════════╬═════════════╣
║ title1 ║ cla ║
║ title2 ║ csm ║
║ title3 ║ cla ║
╩════════════╩═════════════╝
我怎么会得出这个结果?
╦════════════╦═════════════╗
║ cla ║ csm ║
╬════════════╬═════════════╣
║ title1 ║ title ║
║ title3 ║ ║
╩════════════╩═════════════╝
此查询returns您需要的数据,但不是您想要的格式:
SELECT programs, GROUP_CONCAT(title) AS titles
FROM bookprograms
GROUP BY programs
它returns:
programs | titles
----------+---------------
cla | title1,title3
cls | title2
在客户端代码中,您可以将其变形为您需要的结构。 header 单元格的值在字段 programs
中返回。用逗号 (,
) 拆分字段 title
的值,您将获得该列其余部分的数据单元格。对结果集中的每一行重复以获取所需 table.