我有3张桌子
广告系列1(表格)
id campaign_details
1 'some detail'
广告系列2(表格)
id campaign_details
1 'some other detail'
campaign_list(TABLE)
id campaign_table_name
1 'campaign1'
2 'campaign2'
Campaign列表包含上述两个表的表名。我想从Campaign List表中选择并使用我从此select中获得的表名获取记录计数 例如。
使用select i get campaign1(表名)。然后我在campaign1上运行select查询来计算记录数。
我现在正在做的是。 - 从campign_list中选择 -loop遍历所有campaign_table_names并单独运行select query
有没有办法使用单个查询执行此操作 像这样的东西
select campaign_name,(SELECT COUNT(*) FROM c.campaign_name) as campcount from campaign_list c
SQLFiddle:http://sqlfiddle.com/#!9/b766d/2
答案 0 :(得分:0)
在单个查询中无法动态构建它,但可能会作弊。特别是如果只有两个链表。
我列出了两个选项
左外连接两个表
select campaign_name,
coalesce(c1.campaign_details, c2.campaign_details)
from campaign_list c
left join campaign1 c1 using (id)
left join campaign2 c2 using (id);
联合所有两个不同的选择
select campaign_name,
campaign_details
from campaign_list c
join campaign1 c1 using (id)
union all
select campaign_name,
campaign_details
from campaign_list c
join campaign2 c2 using (id);
答案 1 :(得分:0)
将广告系列表格合并到1个表格中,然后添加一个名为' type'的列。 (INT)。
campaign_items表:
campaign_id campaign_name
1 'campaign1'
2 'campaign2'
campaign_lists表
SELECT campaign_name, (SELECT COUNT(*) FROM campaign_items WHERE item_type = campaign_id) as campaign_count
FROM campaign_lists
然后您可以使用以下select语句:
{{1}}
答案 2 :(得分:0)
您的问题源于糟糕的数据库设计。数据库用于对数据及其关系进行排序。 CD数据库包含专辑,歌曲,艺术家等。商业数据库可以包含物品,仓库,销售等。您的数据库包含表名。 [...思考时间:-)]
(编写DBMS时,您希望存储表名,列名,约束等,但我想我是正确的,假设您没有编写新的DBMS。)
因此,创建处理实际数据的表。 E.g:
<强> campain_type 强>
id_campain_type description 1 Type A 2 Type B 3 Type C
<强> campain 强>
id_campain id_campain_type date 33 1 2015-06-03 85 2 2015-10-23 97 2 2015-12-01
<强>查询强>
public static void main(String[] args) {
RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
Map<String, String> systemProperties = runtimeBean.getSystemProperties();
Set<String> keys = systemProperties.keySet();
System.out.println("HAY: " + systemProperties.get("LOCALE_USER_DEFAULT"));
System.out.println("HAY: " + systemProperties.get("LOCALE_SDECIMAL"));
for (String key : keys) {
String value = systemProperties.get(key);
System.out.printf("[%s] = %s.\n", key, value);
}
}
<强>结果强>
description cnt Type A 1 Type B 2 Type C 0