За последние 24 часа нас посетили 17150 программистов и 1298 роботов. Сейчас ищут 1489 программистов ...

Помогите составить запрос на выборку

Тема в разделе "MySQL", создана пользователем aleXioid, 18 янв 2007.

  1. aleXioid

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

    С нами с:
    9 фев 2006
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Беларусь, г.Минск
    Че-то меня сегодня глючит, но никак не могу составить запрос.

    Есть две таблицы с данными "cases" и "items". С одним элементом из cases связано несколько items (cases.ID=items.ID_case). В обоих таблицах также содержится поле Visible (Visible=1 - информация отображается на сайте, 0 - скрыта).

    Необходимо составить запрос, который выведет все cases.ID для которых все связанные items имеют Visible=0.

    Запрос:
    Код (Text):
    1. SELECT a.ID, a.Name, Count(b.ID) AS NumItems FROM cases AS a
    2. LEFT JOIN items AS b ON a.ID=b.ID_case
    3. WHERE b.Visible=0
    4. GROUP BY a.ID
    5. HAVING NumItems=0
    в результате выдает 0-строк
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    этот запрос всегда будет возращать 0 строк
     
  3. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    второе условие утверждает что сопоствавленных записей в "b" быть не должно,
    первое условие, что у записи "b" (которой быть не должно) Visible=0
     
  4. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Код (Text):
    1. SELECT
    2.    a.ID, a.Name, Count(b.ID) AS NumItems
    3. FROM
    4.    cases AS a,
    5.    items AS b
    6. WHERE
    7.    a.ID=b.ID_case
    8. GROUP BY
    9.    a.ID
    10. HAVING
    11.    SUM(b.Visible) = 0
     
  5. aleXioid

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

    С нами с:
    9 фев 2006
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Беларусь, г.Минск
    Thanks.

    Как-то я не подумал просто проверять сумму. Самое простое решение оказывается самым действенным. :)