За последние 24 часа нас посетили 55954 программиста и 1620 роботов. Сейчас ищут 1014 программистов ...

запрос из неск. таблиц с подсчетом строк

Тема в разделе "MySQL", создана пользователем Lesya, 11 сен 2009.

  1. Lesya

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

    С нами с:
    14 авг 2006
    Сообщения:
    54
    Симпатии:
    0
    Адрес:
    Запорожье
    Есть две таблицы:
    Код (Text):
    1. select * from tbl_adresa;
    2. +---------+-----------+
    3. | adresID | adresname |
    4. +---------+-----------+
    5. |       2 | aaa       |
    6. |       1 | bbb       |
    7. |       3 | ccc       |
    8. +---------+-----------+
    Код (Text):
    1. select * from tbl_doc_adr;
    2. +--------+-----------+----------+
    3. |     ID |    doc_id | adres_id |
    4. +--------+-----------+----------+
    5. |      2 |         2 |        2 |
    6. |      3 |         2 |        3 |
    7. |      4 |         1 |        2 |
    8. |      5 |         3 |        3 |
    9. |      6 |         4 |        1 |
    10. |      7 |         4 |        3 |
    11. +--------+-----------+----------+
    Мне надо сформировать запрос, выдававший все данные из первой таблицы и количество строк во второй таблице, где для 4-го документа tbl_adresa.adresID=tbl_doc_adr.adres_id. Запрос:
    [sql]select tbl_adresa.*,count(*) from tbl_adresa, tbl_doc_adr
    WHERE doc_id='4' AND tbl_adresa.adresID=tbl_doc_adr.adres_id
    GROUP BY adresID;[/sql]
    Выдает такой результат:
    Код (Text):
    1. +---------+-----------+----------+
    2. | adresID | adresname | count(*) |
    3. +---------+-----------+----------+
    4. |       1 | aaa       |        1 |
    5. |       3 | ccc       |        1 |
    6. +---------+-----------+----------+
    А нужно, чтобы строки с 0 значением не отсеивались, т.е. результат должен быть таким:
    Код (Text):
    1. +---------+-----------+----------+
    2. | adresID | adresname | count(*) |
    3. +---------+-----------+----------+
    4. |       1 | aaa       |        1 |
    5. |       2 | bbb       |        0 |
    6. |       3 | ccc       |        1 |
    7. +---------+-----------+----------+
    Подскажите пожалуйста как реализовать.
     
  2. Lesya

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

    С нами с:
    14 авг 2006
    Сообщения:
    54
    Симпатии:
    0
    Адрес:
    Запорожье
    Видимо придется два запроса делать и анализировать средствами РНР.
     
  3. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    курим LEFT JOIN
     
  4. Lesya

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

    С нами с:
    14 авг 2006
    Сообщения:
    54
    Симпатии:
    0
    Адрес:
    Запорожье
    Спасибо за подсказку. Вроде вкурила.
    [sql]SELECT tbl_adresa.*, count(tbl_doc_adr.adres_id) FROM tbl_adresa
    LEFT JOIN tbl_doc_adr ON tbl_doc_adr.adres_id=tbl_adresa.adresID AND doc_id='4'
    GROUP BY adresID;[/sql]
    Код (Text):
    1. +---------+-----------+-----------------+
    2. | adresID | adresname | count(adres_id) |
    3. +---------+-----------+-----------------+
    4. |       1 | aaaaaaa   |               1 |
    5. |       2 | bbbbbbb   |               0 |
    6. |       3 | ccccccc   |               1 |
    7. +---------+-----------+-----------------+