SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.02.2013 14:16:27

Jops
Участник
Зарегистрирован: 28.01.2013
Сообщений: 8

Удаление строк с условием при запросе?

Здравствуйте уважаемые! Я вновь с проблемой в своих таблицах
Суть в следующем: Есть вьюшка v_r_g2 (во вложении). Уже нормально сформирована и отражается, как и требуется.
Есть запрос к ней:

SELECT distinct
cam_gr_id, user_id, cam_group_name, is_admin, rule_cam_status_user, rule_cam_status_group,

(CASE
WHEN (ISNULL(rule_status) AND ISNULL(rule_status_group) AND ISNULL(rule_cam_status_user)
AND ISNULL(rule_cam_status_group) AND (is_admin = 0)) THEN 3
// Если все вышеперечисленные права NULL и is_admin = 0, то значение из столбца result заменяется на тройку

WHEN (ISNULL(rule_status) AND ISNULL(rule_status_group) AND (is_admin = 0 || 1))
THEN result
// Если все вышеперечисленные права NULL и is_admin = 0 или 1, то значение из столбца result остаются без изменений


WHEN (is_admin = 1) THEN result
// result остаётся без изменений

ELSE 3 END) AS result

FROM v_r_g2


При запуске данного запроса выводятся данные, но не в той форме, в которой требуются для вывода. То есть впоследствии, требуются три основных значения cam_gr_id, user_id, result. Но так как cam_gr_id (это группа камер) содержит множество cam_id (камеры), то получается иногда две строки с одинаковыми cam_gr_id, user_id, но с разными result. cam_id нельзя убрать из таблицы (не будет нужного конечного результата)!
Можно ли оставить только одну строчку с cam_gr_id, user_id при условиях:
1. Если result = 3, то оставлять только эту строчку, Если же любому другому числу, то оставлять как есть (Если тройка не будет записана CASE`ом, то второй строчки не будет, соответственно только при ройке нужно будет применить ЭТО условие)

Если кто меня не понял, задавайте вопросы) Постараюсь разжевать более дотошно и понятно.


Прикрепленные файлы:
Attachment Icon cams0.rar, Размер: 3,546 байт, Скачано: 878

Неактивен

 

#2 09.02.2013 15:05:23

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Удаление строк с условием при запросе?

Не понял что вы хотите получить, но заметил одну маленькую ошибку

Jops написал:

WHEN (ISNULL(rule_status) AND ISNULL(rule_status_group) AND (is_admin = 0 || 1))

Не

is_admin = 0 || 1

а
is_admin = 0 || is_admin =1

или
is_admin in(0,1)

Неактивен

 

#3 10.02.2013 07:15:21

Jops
Участник
Зарегистрирован: 28.01.2013
Сообщений: 8

Re: Удаление строк с условием при запросе?

Спасибо за подсказку.
Под одной строчкой я имел ввиду только одну из двух строчек с (например cam_gr_id = 2 user_id = 6). А в то же время строчка (или строчки) с cam_gr_id = 3 user_id = 4 должны тоже присутствовать в выборке. То есть мне ЭТОТ запрос (который написан в теме) нужно подчистить от одинаковых строк с изложенным условием)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson