Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы по нескольким параметрам / 5 сообщений из 5, страница 1 из 1
18.10.2016, 19:33
    #39329286
alexzh16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы по нескольким параметрам
добрый день, существует такая база:

CREATE TABLE `TEST` (
`ID` int(10) NOT NULL,
`TAB1` int(15) DEFAULT NULL,
`TAB2` varchar(1) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `TEST` (`ID`, `TAB1`, `TAB2`) VALUES
(23786, 2766, 'B'),
(28606, 2766, 'B'),
(29864, 2764, 'A'),
(11748, 2764, 'A'),
(11876, 2765, 'B'),
(11116, 2767, 'B'),
(12014, 2764, 'B'),
(12103, 2764, 'B'),
(12104, 2764, 'B'),
(11131, 2764, 'B'),
(12222, 2768, 'B'),
(111697, 2766, 'B'),
(111781, 2766, 'B'),
(112115, 2764, 'B'),
(23774, 2766, 'S')

как выбрать все поля, где TAB1 != 2764 или TAB1 != 2765 и TAB2 != "S"

что то я совсем потерялся, спасибо за ранее.
...
Рейтинг: 0 / 0
18.10.2016, 19:41
    #39329295
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы по нескольким параметрам
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- выбрать все поля
SELECT *
FROM test
-- где TAB1 != 2764 или TAB1 != 2765 
WHERE tab1 NOT IN (2764, 2765)
-- и TAB2 != "S"
AND tab2 != 'S'
...
Рейтинг: 0 / 0
18.10.2016, 19:50
    #39329301
alexzh16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы по нескольким параметрам
Спасибо за столь быстрый ответ!
...
Рейтинг: 0 / 0
18.10.2016, 20:05
    #39329310
alexzh16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы по нескольким параметрам
Akina,

-- еще можно один вопросец?

-- есть две таблицы, сегодня 2016-10-18

CREATE TABLE `TEST0` (
`ID` int(10) NOT NULL,
`TAB1` int(15) DEFAULT NULL,
`TAB2` varchar(1) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `TEST0` (`ID`, `TAB1`, `TAB2`) VALUES
(23786, 2766, 'B'),
(28606, 2766, 'B'),
(29864, 2764, 'A'),
(11748, 2764, 'A'),
(11876, 2765, 'B'),
(11116, 2767, 'B'),
(12014, 2764, 'B'),
(12103, 2764, 'B'),
(12104, 2764, 'B'),
(11131, 2764, 'B'),
(12222, 2768, 'B'),
(111697, 2766, 'B'),
(111781, 2766, 'B'),
(112115, 2764, 'B'),
(23774, 2766, 'S')

-- и

CREATE TABLE `TEST1` (
`ID` int(10) NOT NULL,
`DATA` date DEFAULT "2016-01-01",
`TAB20` varchar(1) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `TEST1` (`ID`, `DATA`, `TAB20`) VALUES
(23786, '2016-10-02'), 'NA'),
(23786, '2016-10-03', 'NA'),
(23786, '2016-10-04', 'NA'),
(23786, '2016-10-05', 'OFF'),
(11748, '2016-10-01', 'NA'),
(11748, '2016-10-07', 'NA'),
(11748, '2016-10-09', 'NA'),
(11748, '2016-10-18', 'ON'),
(11876, '2016-10-01', 'NA'),
(11876, '2016-10-07', 'NA'),
(11876, '2016-10-09', 'ON'),
(11876, '2016-10-14', 'OFF')

-- выбрать все ID, где TEST1.TAB1 != 2764 или TEST0.TAB1 != 2765 и TEST0.TAB2 != "S" и TEST1.TAB20 не равнялось "ON" у ID и учитывать дату ≥ 3 дням от сегодняшней

-- те результат дожен быть 23786 и 11748, так как у ID 11876 событие ON случилось 2016-10-09 и ее не надо учитывать, так же как у 11748 оно произошло один день назад от сегодняшней

спасибо еще раз
...
Рейтинг: 0 / 0
19.10.2016, 11:36
    #39329649
alexzh16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы по нескольким параметрам
-- немного поправка, ошибочка была:

CREATE TABLE `TEST0` (
`ID` int(10) NOT NULL,
`TAB1` int(15) DEFAULT NULL,
`TAB2` varchar(1) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `TEST0` (`ID`, `TAB1`, `TAB2`) VALUES
(23786, 2766, 'B'),
(28606, 2766, 'B'),
(29864, 2764, 'A'),
(11748, 2764, 'A'),
(11876, 2765, 'B'),
(11116, 2767, 'S'),
(23774, 2766, 'S')

CREATE TABLE `TEST1` (
`ID` int(10) NOT NULL,
`DATA` date DEFAULT "2016-01-01",
`TAB20` varchar(2) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `TEST1` (`ID`, `DATA`, `TAB20`) VALUES
(23786, '2016-10-02', 'NA'),
(23786, '2016-10-05', 'OFF'),
(11748, '2016-10-01', 'NA'),
(11748, '2016-10-18', 'ON'),
(11876, '2016-10-01', 'NA'),
(11876, '2016-10-09', 'ON'),
(11876, '2016-10-14', 'OFF'),
(23774, '2016-08-14', 'ON'),
(23774, '2016-09-14', 'OFF')

-- выбрать все ID, где TEST1.TAB1 != 2777 или TEST0.TAB1 != 2764 и TEST0.TAB2 != "S" и в TEST1.TAB20 событие "ON" ни разу не произошло либо старше трех дней (у ID и учитывать дату ≥ 3 дням от сегодняшней 18.10.2016)

-- те результат должен быть 23786, 11876
ID 23786 событие ON не было
ID 11876 событие ON случилось 2016-10-09 и оно старше 3х дней

ID 11748 событие ON случилось 2016-10-09 и у него профиль "2764"
ID 23774 статус "S"
ID 11116 статус "S"

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


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