我知道我錯過了一些東西,我嘗試了幾種不同的方法,但我忽略了(或者太努力)。有人可以告訴我在這個SQL中我錯了嗎?SQL JOIN計數和SUM問題
SELECT id,
COUNT(id) AS dupBlocks
FROM tbl_duplicates8 INNER JOIN (
tbl_accounts8,
tbl_delaccounts,
tbl_bad_bots,
tbl_log,
tbl_ipban,
tbl_ipban8
) ON (
tbl_accounts8.SUM(num_attacks) AND
tbl_delaccounts.SUM(noattacks) AND
tbl_bad_bots.COUNT(id) AND
tbl_log.COUNT(id) AND
tbl_ipban.COUNT(txt_ip) AND
tbl_ipban8.COUNT(ip)
);
我沒有注意到這個MySQL Join two tables count and sum from second table,但它返回時返回null。
任何幫助,將不勝感激。
爲了進一步爲更好的回答這個問題,這是我目前在做什麼:
$statsresults['newIPBan'] = $db->query("SELECT COUNT(ip) AS newIPBan FROM tbl_ipban8;");
$statsresults['oldIPBan'] = $db->query("SELECT COUNT(txt_ip) AS oldIPBan FROM tbl_ipban;");
$statsresults['log_blocks'] = $db->query("SELECT COUNT(id) AS logBlocks FROM tbl_log;");
$statsresults['badbots'] = $db->query("SELECT COUNT(id) AS badBots FROM tbl_bad_bots;");
$statsresults['del_num_attacks'] = $db->query("SELECT SUM(noattacks) AS deltotalattacks FROM tbl_delaccounts;");
$statsresults['num_attacks'] = $db->query("SELECT SUM(num_attacks) AS totalattacks FROM tbl_accounts8;");
$statsresults['dup_blocks'] = $db->query("SELECT COUNT(id) AS dupBlocks FROM tbl_duplicates8;");
將返回此:
| ['newIPBan0newIPBan'] = String(6) "289033"
| ['oldIPBan0oldIPBan'] = String(6) "125723"
| ['log_blocks0logBlocks'] = String(4) "6481"
| ['badbots0badBots'] = String(5) "15310"
| ['del_num_attacks0deltotalattacks'] = String(9) "119494860"
| ['num_attacks0totalattacks'] = String(8) "25286478"
| ['dup_blocks0dupBlocks'] = String(6) "179916"
所以現在它被調用數據庫7倍獲得每筆金額或數量。我希望將其改爲1個數據庫調用並將其全部返回。
能否請您提供更多的信息對你正在嘗試做的?例如'JOIN''tbl_duplicates8'到6個其他表,然後返回特定字段的SUM和COUNT?就目前而言,Sql查詢沒有多大意義。 – StuartLC
請提供樣本數據和期望的結果。 SQL的問題在於它不是SQL,很難(不可能)弄清楚你正在做什麼。 –
我更新了這個問題,舉了一個我目前成功做的例子,雖然需要7次數據庫調用才能實現。我希望我能在1次通話中完成這一切,並返回總數。 謝謝 – SecureLive