2012-04-05 31 views
2

私のクエリにCOUNTを追加する際に問題があります。
質問クエリが正常に動作しますが、すぐに私はtotalNum
AS COUNT(*)を追加すると、私はmysql count with UNION php

$query = "(SELECT 'table1' AS tablename, navid, thumb, title, longText, clicks AS allClicks, COUNT(*) AS totalNum 
FROM table1 
WHERE $column=1 
AND enabled=1) 

UNION DISTINCT 

(SELECT 'table2' AS tablename, navid, thumb, title, longText, clicks AS allClicks, COUNT(*) AS totalNum 
FROM table2 
WHERE $column=1 
AND enabled=1) 
ORDER BY allClicks DESC"; 


while ($row = mysql_fetch_assoc($result)){ 
    $navid = $row['navid']; 
    $thumb = $row['thumb']; 
    $tablename = $row['tablename']; 
    $title = strtoupper($row['title']); 

    etc... 

} 

各テーブルから1件の結果を得る:にCOUNT(*)を追加するための最良の方法は何ですが私の私の結合クエリですか?

答えて

1

などCOUNTなどの集計関数を使用する場合は、あなたがGROUP BY句を含める必要があります。私はCOUNTを取得したい場合

(SELECT 
    'table1' AS tablename, 
    navid, 
    thumb, 
    title, 
    longText, 
    clicks AS allClicks, 
    COUNT(*) AS totalNum 
FROM table1 
WHERE 
    $column=1 
    AND enabled=1 
GROUP BY navid, thumb, title, longText, clicks) 

UNION DISTINCT 

(SELECT 
    'table2' AS tablename, 
    navid, 
    thumb, 
    title, 
    longText, 
    clicks AS allClicks, 
    COUNT(*) AS totalNum 
FROM table2 
WHERE 
    $column=1 
    AND enabled=1 
GROUP BY navid, thumb, title, longText, clicks) 
+0

、これは、whileループでそれを行うのでしょうか? $ totalNum = $ row ['totalNum']; –

+0

私は決して1行のPHPを書いたことはありませんが、うまくいくように見えます。 –

+0

私は1のカウント結果を得続けます –