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