За последние 24 часа нас посетили 17324 программиста и 1223 робота. Сейчас ищут 1424 программиста ...

выборка из двух табличек

Тема в разделе "Вопросы от блондинок", создана пользователем Fant0M, 13 дек 2006.

  1. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    есть табличка categ в ней 2 поля id_categ и categ
    и есть вторая табличка object, где хранятся записи, для каждой categ несколько....
    мне надо вытащить сами названия categ и чтоб рядом писалось сколько записей у каждой.
    составил запрос:

    PHP:
    1.      $qr = "SELECT *, COUNT(object.id_categ) FROM object, categ WHERE categ.id_categ = object.id_categ ORDER BY categ";
    2.      $r = mysql_query($qr);
    3.      while ($rr = mysql_fetch_array($r))    ///178 строка
    4.     {
    5.     }
    пишет ошибку
     
  2. Anonymous

    Anonymous Guest

    Fant0M, потому что запрос неверный.
     
  3. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    спасибо за разъснение ))))

    А не подскажете именно где ошибка и как сделать правильно? Буду очень благодарен
     
  4. Anonymous

    Anonymous Guest

    Откуда я знаю — как? Как — зависит от того, что вы пытаетесь получить.
    А ошибка в том, что COUNT() - есмь функция групповая и нельзя выбирать одновременно групповую функцию, и просто запрос с полями...
     
  5. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    подскажите пожалуйста как это осуществить? Буду очень признателен...
     
  6. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    изменил ORDER BY на GROUP BY ... теперь выводятся только те категории в которых есть записи... а как сделать так, чтоб все выводились?
     
  7. Anonymous

    Anonymous Guest

    Надо вам почитать про JOIN
     
  8. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    все, сделал, вот так:
    PHP:
    1. <?
    2.      $qr = "SELECT *, COUNT(object.id_categ) FROM categ LEFT JOIN object ON categ.id_categ = object.id_categ GROUP BY categ";
    3.      $r = mysql_query($qr);
    4.      while ($rr = mysql_fetch_array($r))
    5.     {
    6.     }
    7.  
    8. ?>
     
  9. Anonymous

    Anonymous Guest

    Мои поздравления... ;)
     
  10. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    тока сейчас заметил, оказывается не все я сделал.
    Вообщем вот такой запрос:
    PHP:
    1. <?
    2.      $qr = "SELECT *, COUNT(object.id_categ) FROM categ LEFT JOIN object ON categ.id_categ = object.id_categ GROUP BY categ";
    3.      $r = mysql_query($qr);
    4.      while ($rr = mysql_fetch_array($r))
    5.     {
    6. echo ' <tr><td><a class="tst8" href = "ind.php?id_categ='.$rr['id_categ'].'">'.$rr['categ'].'</a></td><td align="right">['. $rr['COUNT(object.id_categ)'].']</td></tr>';
    7.     }
    8.  
    9. ?>
    так вот если в категории нет записей, то ссылка на эту категорию не генерится... пробовал разные варианты - не работает... Подскажите плизх как сделать?
     
  11. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    categ.id_categ = object.id_categ

    так ты в результат просишь включать только те категории, которые объекты содержат..

    перенеси это условие в WHERE
     
  12. Xpert

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

    С нами с:
    15 дек 2006
    Сообщения:
    47
    Симпатии:
    0
    Какая разница как вы сделали, суть в том что нет обработки ошибок, ни самого запроса ни отсуствия результата... и это плохо.
     
  13. Fant0M

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

    С нами с:
    5 дек 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Миасс
    Оказалось я всего лишь неправильно запрос оставил - надо было так:
    PHP:
    1. <?
    2.      $qr = "SELECT categ.id_categ, categ.categ, COUNT(object.id_categ) FROM categ LEFT JOIN object ON categ.id_categ = object.id_categ GROUP BY categ";
    3.      $r = mysql_query($qr);
    4.      while ($rr = mysql_fetch_array($r))
    5.     {
    6. echo ' <tr><td><a class="tst8" href = "ind.php?id_categ='.$rr['id_categ'].'">'.$rr['categ'].'</a></td><td align="right">['. $rr['COUNT(object.id_categ)'].']</td></tr>';
    7.     }
    8.  
    9. ?>
     
  14. Xpert

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

    С нами с:
    15 дек 2006
    Сообщения:
    47
    Симпатии:
    0
    Fant0M
    И опять нет обработки ошибок...
    Вы бы тогда еще на первой странице темы поняли, что запрос неверный. Или темы не было бы вообще.