1
我有一张表,其中包含来宾对于事件的数据。我可以检索的人谁出席(
membersAttended
)与此查询次数:结合并使用来自两个不同表的SQL值的算术运算SELECT COUNT(DISTINCT g.`name1`) AS `membersAttended` FROM `tmc_doorapp_guests` g LEFT JOIN `tmc_doorapp_events` e ON e.`id` = g.`event_id` WHERE `name1` REGEXP '^[0-9]+$' AND e.`date` > DATE_SUB(NOW(), INTERVAL 30 DAY) AND g.`checkin` = 1;
要检索的成员总数(
totalMembers
)我使用:SELECT COUNT(DISTINCT `id`) AS `totalMembers` FROM `tmc_users`;
要得到百分比值(
totalPercent
)的成员谁参加了总成员,我使用PHP做出这两个查询,然后像这样计算:$totalPercent = number_format(($membersAttended/$totalMembers*100),2);
我已经试过了两个查询,并以类似的方式下面的百分比计算相结合,没有运气:
SELECT COUNT(DISTINCT g.`name1`) AS `membersAttended`,
COUNT(DISTINCT m.`id`) AS `totalMembers`,
(`membersAttended` * 100/`totalMembers`) AS `totalPercent`
FROM `tmc_doorapp_guests` g, `tmc_users` m
LEFT JOIN `tmc_doorapp_events` e
ON e.`id` = g.`event_id`
WHERE `name1` REGEXP '^[0-9]+$'
AND e.`date` > DATE_SUB(NOW(), INTERVAL 30 DAY)
AND g.`checkin` = 1;
我也试图拓展出列:
SELECT COUNT(DISTINCT g.`name1`) AS `membersAttended`,
COUNT(DISTINCT m.`id`) AS `totalMembers`,
(COUNT(DISTINCT g.`name1`) * 100/COUNT(DISTINCT m.`id`)) AS `totalPercent`
FROM `tmc_doorapp_guests` g, `tmc_users` m
LEFT JOIN `tmc_doorapp_events` e
ON e.`id` = g.`event_id`
WHERE `name1` REGEXP '^[0-9]+$'
AND e.`date` > DATE_SUB(NOW(), INTERVAL 30 DAY)
AND g.`checkin` = 1;
这给我的错误:
Error code: 1054. Unknown column 'g.event_id' in 'on clause'
如何将这些SQL/PHP查询/计算组合到一个SQL查询中?
交换'tmc_doorapp_guests克,tmc_users为了M'有适当的JOIN,即:'tmc_users男,tmc_doorapp_guests g' – mitkosoft
@mitkosoft这工作!添加这个作为答案,我会接受。为什么会这样? – Ben
它来自SQL严格模式,以便在查询中遵循严格的(即适当的)语法。 – mitkosoft