Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Убрать ненужные записи из результата запроса / 2 сообщений из 2, страница 1 из 1
08.01.2014, 02:03:04
    #38519335
Avenit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Убрать ненужные записи из результата запроса
Всем привет!

Необходимо выбрать данные из таблицы pb_groups для заданного user_id с условием:
1) Если для заданного user_id и group_id есть запись в таблице pb_access в результате должно быть поле access этой записи.
2) Если нет, тогда должно быть поле access записи с user_id=0
3) Иначе не выбираем.

Запрос из которого нужно убрать дубли:

Код: plsql
1.
2.
3.
4.
SELECT id,pb_groups.group_id,owner_id,name,comment,create_ts,
       pb_access.access,pb_access.user_id
  FROM pb_groups
  LEFT JOIN pb_access ON pb_access.group_id=pb_groups.id




Собственно сама таблица и данные:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE TABLE IF NOT EXISTS `pb_access` (
  `group_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `access` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
INSERT INTO `pb_access` (`group_id`, `user_id`, `access`) VALUES
(3, 1, 1),
(3, 0, 0),
(4, 0, 1),
(3, 2, 3),
(1, 0, 0),
(2, 0, 0);
 
CREATE TABLE IF NOT EXISTS `pb_groups` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL DEFAULT '0',
  `owner_id` int(11) NOT NULL,
  `name` varchar(30) NOT NULL,
  `comment` varchar(255) NOT NULL,
  `create_ts` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
 
INSERT INTO `pb_groups` (`id`, `group_id`, `owner_id`, `name`, `comment`, `create_ts`) VALUES
(1, 0, 0, 'Внутренние', 'Группа внутренних абонентов организации', 0),
(2, 0, 1, 'Родные', 'Моя личная группа для родственников', 0),
(3, 0, 1, 'ООО "Рога и копыта"', 'Клиент', 0),
(4, 0, 1, 'ООО "Палки и скалки"', 'Поставщик', 0);
...
Рейтинг: 0 / 0
08.01.2014, 13:15:45
    #38519474
Avenit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Убрать ненужные записи из результата запроса
Получилось вот так:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT id,pb_groups.group_id,owner_id,name,comment,create_ts,
       pb_access.access,MAX(pb_access.user_id) user_id
  FROM pb_groups
  LEFT JOIN pb_access ON pb_access.group_id=pb_groups.id
  WHERE user_id IN (0,1)
  GROUP BY id



Вроде правильно выбирает :)
Всем спасибо!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Убрать ненужные записи из результата запроса / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]