Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2012, 21:37   #1
killer12rus
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 28
По умолчанию Групировка в MySQL

Здравствуйте, у меня есть таблица, которая служит для связи многие ко многим, в ней 3 поля:
id post_id tag_id

Делаю запрос
Код:
SELECT post_id, tag_id FROM `posts_tags` WHERE tag_id IN (22,21,23)
Поулчаю реузльтат:
post_id tag_id
425 22
425 23
425 21

822 21

13481 22
13481 21
Возможно ли отсортировать результат так чтобы post_id, который соответствует большему количеству совпавших tag_id из запроса, был вверху?
Если взять полученный результат выше, то надо получить что - то вроде
post_id tag_id
425 22
425 23
425 21

13481 22
13481 21

822 21

А еще лучше получить только post_id, но в отсортированном виде, но если первое сделать, то это уже просто
P.S. Надеюсь понятно объяснил задачу)
killer12rus вне форума Ответить с цитированием
Старый 04.05.2012, 22:47   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Код:
SELECT post_id, tag_id FROM `posts_tags` WHERE tag_id IN (22,21,23) GROUP BY post_id ORDER BY post_id DESC
ADSoft вне форума Ответить с цитированием
Старый 04.05.2012, 22:59   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В MySql пойдет или нет не знаю. Но из общих соображений что-то вроде этого
Код:
SELECT A.post_id, A.tag_id ,
    (SELECT COUNT(*) 
       FROM `posts_tags` B 
       WHERE B.post_id=A.post_id AND B.tag_id IN (22,21,23)) AS CountTag
  FROM `posts_tags` A
  WHERE A.tag_id IN (22,21,23)
  ORDER BY 3 DESC,1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.05.2012, 13:06   #4
killer12rus
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В MySql пойдет или нет не знаю. Но из общих соображений что-то вроде этого
Код:
SELECT A.post_id, A.tag_id ,
    (SELECT COUNT(*) 
       FROM `posts_tags` B 
       WHERE B.post_id=A.post_id AND B.tag_id IN (22,21,23)) AS CountTag
  FROM `posts_tags` A
  WHERE A.tag_id IN (22,21,23)
  ORDER BY 3 DESC,1
В Mysql работает, спасибо большое
P.S. + не нашел, по-этому спасибо говорю так: "Спасибо".
killer12rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая групировка данных в Excel maugli1212 Microsoft Office Excel 10 19.10.2010 17:25
есть адреси в mysql нужно поиска с AJAX for mysql orter PHP 1 24.09.2010 10:24
Групировка по полю в MS ACCESS Jeid SQL, базы данных 3 12.09.2010 14:38
Групировка значений и их сумма, но с условием psbad Microsoft Office Excel 23 19.11.2009 11:00
Групировка Gawwws Microsoft Office Excel 3 30.10.2008 14:15