[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересный запрос на выборку количества записей
forza
Добрый день.
Ломаю голову пол дня вот над такой задачей. Нужно выбрать количество записей по хитрому условию (если такое условие конечно можно составить)
Собственно вот таблица:
+----+----------+-----------+------+---------------------+
| id | owner_id | header_id | type | appeared_date |
+----+----------+-----------+------+---------------------+
| 1 | 4 | 1 | 0 | 2014-04-29 14:14:29 |
| 2 | 4 | 1 | 1 | 2014-04-29 14:14:29 |
| 3 | 4 | 2 | 0 | 2014-04-29 14:14:42 |
| 4 | 4 | 2 | 1 | 2014-04-29 14:14:42 |
| 5 | 4 | 1 | 2 | 2014-04-29 14:14:42 |
+----+----------+-----------+------+---------------------+

Допустим мы хотим выбрать количество заголовков при котором type равен 1.
SELECT count(*) as cnt FROM `sc_post_folder_4` WHERE owner_id=4 AND type=1

Результат запроса (в виде таблицы для того, чтобы было более наглядно)

+----+----------+-----------+------+---------------------+
| id | owner_id | header_id | type | appeared_date |
+----+----------+-----------+------+---------------------+
| 2 | 4 | 1 | 1 | 2014-04-29 14:14:29 |
| 4 | 4 | 2 | 1 | 2014-04-29 14:14:42 |
+----+----------+-----------+------+---------------------+

А вот теперь что касается "хитрого запроса". Обратите внимание, на запись с идентификатором 5

+----+----------+-----------+------+---------------------+
| id | owner_id | header_id | type | appeared_date |
+----+----------+-----------+------+---------------------+
| 5 | 4 | 1 | 2 | 2014-04-29 14:14:42 |
+----+----------+-----------+------+---------------------+

type = 2, а header_id = 1
Возвращаемся ко 1-ому запросу и смотрим на запись с ИД = 2. header_id у него тоже равен 1, как и у записи с ИД 5 и типом = 2;
Дак вот. реально ли как-то исключить из 1-ого запроса запись с ИД = 2, т.к. есть запись с type = 2 и с таким же header_id.

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
redreem
можно джойнить эту же табличку с нужным фильтром и проверять "есть ли пристыкованные данные или нет".
forza
Цитата
можно джойнить эту же табличку с нужным фильтром и проверять "есть ли пристыкованные данные или нет".

Вот как раз таки этим сейчас и занимаюсь, только никак не могу придумать тот самый фильтр (WHERE условие)

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
forza
Если у кого-нибудь появится похожая ситуация, вот решение:
SELECT * FROM sc_post_folder_4 as a
WHERE a.owner_id=4 AND a.type = 1 AND a.header_id !=
(
SELECT header_id FROM sc_post_folder_4 as b WHERE b.type = 2 AND b.header_id != a.header_id)


_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.