За последние 24 часа нас посетили 62917 программистов и 1679 роботов. Сейчас ищут 982 программиста ...

подсчет количества строк

Тема в разделе "MySQL", создана пользователем serj011, 17 сен 2012.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Гуру msql взываю к вашей помощи)

    есть такой запрос
    Код (Text):
    1. SELECT anketa.*, foto_user. activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online,
    2. (YEAR(CURDATE()) - YEAR(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`))) - IF(RIGHT(CURDATE(), 5) < RIGHT(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`)), 5), 1, 0)) AS `age`
    3. FROM anketa, foto_user, users
    4. WHERE users.del_ank = '0' and users.id = anketa.id_user and ($lf_S) $city_S $albom_foto $online_user
    5. GROUP BY anketa.id
    6. HAVING `age` >= $af AND `age` <= $at
    7. ORDER BY id DESC
    8. LIMIT $start, $num;
    отдельным, я так понимаю запрососм нужно посчитать количество строк, которые вытаскивает этот запрос.

    я так понял что через count нельзя, потому что из-за "GROUP BY" он вернёт кол-во строк в группах...
    наверное нужно через mysql_num_rows???

    вообщем я запутался( я очень плохо в таких сложных запросах разбираюсь, помогите

    Добавлено спустя 1 минуту 12 секунд:
    плохо что на этом форуме код не подствечиватся)))
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    [ code=php ] и все светится...

    а mysql_num_rows тебе чем не угодил?
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Мне бы все угодило АБЫ работало))))
    Т.е. ТОТ ЖЕ запрос, только не через mysql_fetch_array, а чсерез mysql_num_rows???
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    $count_rows = mysql_num_rows(mysql_query(твой запрос));
     
  5. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    $temp = mysql_num_rows(mysql_query("SELECT anketa.*, foto_user.activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online, gender, (YEAR(CURDATE()) - YEAR(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`))) - IF(RIGHT(CURDATE(), 5) < RIGHT(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`)), 5), 1, 0)) AS `age` FROM anketa, foto_user, users WHERE users.del_ank = '0' and users.id = anketa.id_user and ($lf_S) $city_S $albom_foto $online_user GROUP BY anketa.id HAVING `age` >= $af AND `age` <= $at")); - Dmitriy A. Arteshuk, все работает, все считает, но это получается не то что мне нужно...

    короче, морочу всем голову, сам не могу понять что мне нужно...

    это запрос из кода для постраничной навигации... вот рабочий пример из другой моей страницы

    Код (Text):
    1. $num=50;
    2. @$page=$_GET['page'];
    3. $result00=mysql_query("SELECT COUNT(*) FROM anketa INNER JOIN users ON anketa.id_user=users.id WHERE users.id = anketa.id_user and del_ank = '0'",$db);
    4. $temp=mysql_fetch_array($result00);
    5. $posts=$temp[0];
    6. $total=(($posts-1)/$num)+1;
    7. $total=intval($total);
    8. $page=intval($page);
    9. if(empty($page) or $page<0) $page=1;
    10. if($page>$total) $page=$total;
    11. $start=$page*$num-$num;
    12. if ($start<0){$start=0;}
    может мне mysql_num_rows вообще в этом случае не подходит))) просто этот запрос для меня очень сложный и я не знаю как его всунуть в $result00 через COUNT(*)?...(
     
  6. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    отзовитесь люди программисты)
     
  7. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    видимо нужно общее количество записей для определения количества страниц для навигации. для этого можно добавить SQL_CALC_FOUND_ROWS в запрос :
    Код (Text):
    1.  
    2. SELECT  SQL_CALC_FOUND_ROWS anketa.*, foto_user. activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online,
    3. (YEAR(CURDATE()) - YEAR(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`))) - IF(RIGHT(CURDATE(), 5) < RIGHT(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`)), 5), 1, 0)) AS `age`
    4. FROM anketa, foto_user, users
    5. WHERE users.del_ank = '0' and users.id = anketa.id_user and ($lf_S) $city_S $albom_foto $online_user
    6. GROUP BY anketa.id
    7. HAVING `age` >= $af AND `age` <= $at
    8. ORDER BY id DESC
    9. LIMIT $start, $num;
    а затем выполнить запрос для получения общего количества записей удовлетворяющих условию:
    Код (Text):
    1.  
    2. select FOUND_ROWS()