我正在使用以下代碼進行計數,並對數據庫中的值進行求和。mySQL語法有什麼問題?
$query = "SELECT
COUNT(n.*) AS cnt_news,
COUNT(a.*) AS cnt_adv,
COUNT(c.*) AS cnt_comm,
SUM(CASE WHEN c.approve = '1' AND c.spam = '0' THEN 1 ELSE 0 END) AS cnt_approved,
SUM(CASE WHEN c.approve = '0' AND c.spam = '0' THEN 1 ELSE 0 END) AS cnt_unapproved,
SUM(CASE WHEN c.spam = '0' THEN 1 ELSE 0 END) AS cnt_spam,
SUM(a.amount) AS t_amnt,
SUM(a.cashpaid) AS t_cpaid,
SUM(a.balance) AS t_bal
FROM
news n, advertisements a, comments c";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
下面的代碼給我一個錯誤,錯誤的是
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS cnt_news, COUNT(a.*) AS cnt_adv, COUNT(c.*) AS cnt_c' at line 2
如果我刪除前三行的選擇查詢的,它並沒有顯示錯誤,而不是它打印錯誤的價值觀。
這是錯誤的我的代碼。 ??
以下代碼對我來說工作得非常好。
$query = "SELECT COUNT(*) as cnt_news FROM news";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$query = "SELECT COUNT(*) as cnt_adv FROM advertisements";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$query = "SELECT COUNT(*) as cnt_comm FROM comments";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$query = "SELECT SUM(CASE WHEN c.approve = '1' AND c.spam = '0' THEN 1 ELSE 0 END) AS cnt_approved,
SUM(CASE WHEN c.approve = '0' AND c.spam = '0' THEN 1 ELSE 0 END) AS cnt_unapproved,
SUM(CASE WHEN c.spam = '1' THEN 1 ELSE 0 END) AS cnt_spam
FROM COMMENTS c";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$query = "SELECT SUM(a.amount) as t_amnt,
SUM(a.cashpaid) as t_cpaid,
SUM(a.balance) as t_bal
FROM advertisements a";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
我在哪裏出錯了?
我試過你的方式錯誤消失,但爲什麼地獄它打印錯誤的值?我有兩個數據庫表中的行數,它顯示30代替。 :( – 2010-09-13 08:53:23
你正在做一個完整的連接反對三個表新聞n,廣告a,評論c ...嘗試用COUNT(DISTINCT n.id)替換COUNT(n.id)(和您的每個表的等效項) – 2010-09-13 08:56:31
@Mark Baker很好,我甚至沒有注意到查詢的其餘部分。這3個表格是否加入了任何列?我認爲新聞有評論和廣告。 – Fanis 2010-09-13 09:04:24