За последние 24 часа нас посетили 17869 программистов и 1600 роботов. Сейчас ищут 872 программиста ...

Вывод одинаковых записей из таблицы MySQL

Тема в разделе "PHP и базы данных", создана пользователем Fidlestick, 5 ноя 2010.

  1. Fidlestick

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

    С нами с:
    5 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    Добрый вечер!

    Есть 2 таблицы:

    1)Категории

    id | text (таблица categories)
    1 книги
    2 музыка

    Вывод категорий на печать:

    PHP:
    1. <?
    2. $result2 = mysql_query("SELECT * FROM categories ",$db);
    3. $myrow2 = mysql_fetch_array($result2);
    4. do  
    5. {
    6. printf ("<p class='point'><a class='nav_link' href='view.php?cat=%s'>%s</a> </p>",$myrow2["id"],$myrow2["title"]);
    7. }
    8. while ($myrow2 = mysql_fetch_array($result2));
    9. }
    10. ?>
    результат:
    книги
    музыка

    2) таблица с данными:

    data:
    id | cat | text
    1 1 ass
    2 1 sfs
    3 2 sfsdf
    4 2 sfs
    5 2 sfsdf

    Необходимо вывести в браузере количество одинаковых записей из таблицы data и престыковать к категориям, чтобы получить в результате:
    Книги(2)
    Музыка(3)

    Подсчет количества:
    PHP:
    1. SELECT cat, COUNT(cat) FROM data GROUP BY cat.
    Подскажите как добавить этот результат к выводу всех категорий ?
    Заранее благодарен!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    скорей всего селект дистинкт(кат), каунт(кат)
     
  3. Fidlestick

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

    С нами с:
    5 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    Не получится DISTINCT выберет уникальные значения, Count просто подсчитает. А мне надо вывести результат COUNT престыкованный к циклу вывода всех категорий
     
  4. jov27384

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

    С нами с:
    14 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Тюмень
    Так попробуй.
    [sql]SELECT cat, (SELECT count(cat)) AS count FROM data GROUP BY cat[/sql]
    Поправил, у меня работает.
     
  5. Fidlestick

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

    С нами с:
    5 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    jov27384

    Спасибо, попробовал, но выдает ошибку :

    Ответ MySQL:
    #1064 - You have an error in your SQL syntax near 'SELECT count( cat ) ) AS count
    FROM DATA GROUP BY cat' at line 2

    PHP Version 4.3.6
     
  6. jov27384

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

    С нами с:
    14 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Тюмень
    А какая версия MySQL???
    У меня по всякому работает!
    И так тоже
    [sql]
    SELECT cat, COUNT(cat) FROM data GROUP BY cat
    [/sql]
    У меня 5.1.49 все работает.

    [sql]/*

    mysql> /* COUNT() and GROUP BY
    mysql> Number of animals per species:
    mysql> */
    mysql> SELECT species, COUNT(*) FROM Bird GROUP BY species;
    +---------+----------+
    | species | COUNT(*) |
    +---------+----------+
    | Bus | 2 |
    | Car | 1 |
    +---------+----------+
    2 rows in set (0.00 sec)


    */
    Drop table Bird;

    CREATE TABLE Bird (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE
    );

    INSERT INTO Bird VALUES ('BlueBird','Joe','Car','f','1999-03-30',NULL);
    INSERT INTO Bird VALUES ('RedBird','Yin','Bus','m','1979-04-30',1998-01-30);
    INSERT INTO Bird VALUES ('RedBird','Yin','Bus','m','1998-01-30',NULL);


    /* COUNT() and GROUP BY

    Number of animals per species:
    */
    SELECT species, COUNT(*) FROM Bird GROUP BY species;

    [/sql]
     
  7. Fidlestick

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

    С нами с:
    5 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    Версия 4.3.6

    Запрос [sql]SELECT cat, COUNT(cat) FROM data GROUP BY cat[/sql] работает.

    Главная проблема - не знаю как вывести результат в цикле на экран, вместе со всеми категориями. Например если по категории нет заметок то вывести 0, если есть подсчитать количество в таблице data. Как пример ebay - слева вывод всех категрий, в кавычках количество записей в базе.
     
  8. Зверь

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

    С нами с:
    2 ноя 2010
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Fidlestick
    Может как то так:
    [sql]SELECT categories.text, COUNT(cat) as count FROM categories LEFT JOIN data ON categories.id = data.cat GROUP BY text ASC[/sql]
    А вообще учите SQL