我有以下问题。
我有这个SQL查询:
select id, tableid
from sysclass
where id in (
select contentid
from sysclassgroupcontent
where groupid = 5 AND contenttype != 1
);
结果是例如:
ID TableID
1 200
2 300
3 200
现在我想在此查询中插入这些特定表中有多少项,其中id等于id和tableid
代码:
select Count(*) from xxx where classid = yyy;
XXX就是例如200和yyy是死ID,例如1或2。
结果应该如下:
ID TableID Count
1 200 1020
2 300 50021
3 200 13
这是表结构:
表SysClasss:
表SysClassContents:
表SysClassGroup:
表SysTable:
现在我想在表中计算LVElements所有具有classid = 1的项目,如果它在Sysclassgroup = 5中 这可能在一个查询中以及如何实现?
提前谢谢。
答案 0 :(得分:0)
我认为你需要
GROUP BY ID
它会给你想要的结果
答案 1 :(得分:0)
嗯,我认为唯一的方法是使用mysql程序,因为它不可能直接在语句中使用“动态”表名。
尝试类似的事情:
编辑 - 添加分隔符行:
delimiter //
CREATE PROCEDURE getTableCount(IN argTableName CHAR(64), IN argClassid CHAR(64))
BEGIN
SET @s = CONCAT('SELECT count(*) FROM XP_net.',argTableName,' WHERE classid = ', argClassid );
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
//
delimiter ;
然后在你的陈述中用它来称呼它:
编辑 - 添加了加入:
select sysclass.id, sysclass.tableid, getTableCount(SysTable.Name, 'xxx') as count
from sysclass, SysTable:
where id in (
select contentid
from sysclassgroupcontent
where groupid = 5 AND contenttype != 1
)
and SysTable.ID = sysclass.tableid;