powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Убрать ненужные записи из результата запроса
2 сообщений из 2, страница 1 из 1
Убрать ненужные записи из результата запроса
    #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
Убрать ненужные записи из результата запроса
    #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
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Убрать ненужные записи из результата запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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