2011-12-20 2 views
1

У меня есть запрос типа объединения. Как я могу подсчитать количество строк, которые он запрашивает?Count mysql union type query

mysql_query(
    " (SELECT 1 as sort_col,performerid,pic0 
      FROM $table 
      WHERE performerid IS NOT NULL $performeridSql) 
    UNION 
     (SELECT 2 as sort_col,performerid,pic0 
      FROM $table 
      WHERE performerid IS NOT NULL 
       $categorySql $buildSql 
       $breastsize $haircolor $age $ethnicity 
       $willingnessSql) 
      ORDER BY sort_col"); 
+0

В чем смысл всех этих переменных после IS NOT NULL? –

+0

Один пример того, как это сделать: http://www.php.net/manual/en/function.mysql-query.php#81348 или вы ищете больше плана объяснения? –

+0

Обратите внимание, что расширение mysql устарело и на пути к устареванию. Вместо этого следует использовать PDO или mysqli, оба из которых предлагают множество преимуществ, таких как подготовленные заявления. – outis

ответ

0

Просто подсчитывать результаты подзапросов ...

SELECT COUNT(t.*) FROM 
( (SELECT 1 AS sort_col,performerid,pic0 
     FROM $table 
     WHERE performerid IS NOT NULL 
     $performeridSql) 
    UNION 
    (SELECT 2 AS sort_col,performerid,pic0 
     FROM $table 
     WHERE performerid IS NOT NULL 
     $categorySql $buildSql 
     $breastsize $haircolor $age $ethnicity 
     $willingnessSql) 
    ORDER BY sort_col) 
) AS t 
+0

он не работает :( – webmasters

+0

Да, как вы можете видеть, я использовал «AS t», чтобы сообщить MySQL использовать псевдоним вашего подзапрос. –

0

Если вам нужны результаты в дополнение к графу, подобные mysqli_result::num_rows или PDOStatement::rowCount будет возвращать то, что вы хотите. В противном случае запустите запрос в качестве подзапроса, а затем примените функцию aggregate COUNT к результату.