Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
пишу такой запрос
use crm
select 
source, destination, 
sum(convert(float,traffic))/1024.0/1024.0 Traffic_Mb,
sum(convert(float,traffic)) Traffic_Byte
from flow_traffic 
where ((destination='89.236.242.125'  )) and substring(filename,7,2) in ('22','23','24','25','26','27')
and source not between 	'193.27.206.0'	and	'193.27.207.255'
and source not between 	'83.221.172.0'	and	'83.221.175.255'
and source not between 	'83.221.184.0'	and	'83.221.187.255'
and source not between 	'91.203.172.0'	and	'91.203.175.255'
and source not between 	'91.211.4.0'	and	'91.211.7.255'
and source not between 	'94.141.64.0'	and	'94.141.95.255'
and source not between 	'94.230.224.0'	and	'94.230.239.255'
and source not between 	'91.212.89.0'	and	'91.212.89.255'
and source not between 	'195.238.104.0'	and	'195.238.107.255'
and source not between 	'84.54.64.0'	and	'84.54.127.255'
and source not between 	'91.188.128.0'	and	'91.188.159.255'
and source not between 	'83.221.168.0'	and	'83.221.171.255'
and source not between 	'83.221.176.0'	and	'83.221.179.255'
and source not between 	'83.221.180.0'	and	'83.221.183.255'
and source not between 	'217.29.116.0'	and	'217.29.119.255'
and source not between 	'217.29.120.0'	and	'217.29.127.255'
and source not between 	'217.12.80.0'	and	'217.12.87.255'
and source not between 	'213.230.64.0'	and	'213.230.127.255'
and source not between 	'81.95.224.0'	and	'81.95.239.255'
and source not between 	'213.206.32.0'	and	'213.206.63.255'
and source not between 	'195.158.0.0'	and	'195.158.31.255'
and source not between 	'83.69.128.0'	and	'83.69.159.255'
and source not between 	'82.215.64.0'	and	'82.215.127.255'
and source not between 	'85.117.224.0'	and	'85.117.255.255'
and source not between 	'89.146.64.0'	and	'89.146.127.255'
and source not between 	'77.220.192.0'	and	'77.220.223.255'
and source not between 	'91.196.76.0'	and	'91.196.79.255'
and source not between 	'83.221.160.0'	and	'83.221.161.255'
and source not between 	'94.158.48.0'	and	'94.158.63.255'
and source not between 	'91.204.236.0'	and	'91.204.239.255'
and source not between 	'195.88.214.0'	and	'195.88.215.255'
and source not between 	'83.221.188.0'	and	'83.221.191.255'
and source not between 	'195.211.180.0'	and	'195.211.183.255'
and source not between 	'188.113.192.0'	and	'188.113.223.255'
and source not between 	'188.113.224.0'	and	'188.113.227.255'
and source not between 	'82.215.80.0'	and	'82.215.83.255'
and source not between 	'91.212.180.0'	and	'91.212.180.255'
and source not between 	'109.207.240.0'	and	'109.207.255.255'
and source not between 	'46.227.120.0'	and	'46.227.127.255'
and source not between 	'46.255.64.0'	and	'46.255.67.255'
and source not between 	'91.213.31.0'	and	'91.213.31.255'
and source not between 	'217.29.112.0'	and	'217.29.127.255'
and source not between 	'195.158.18.216'	and	'195.158.18.223'
and source not between 	'91.212.89.0'	and	'91.212.89.255'
and source not between 	'195.158.0.10'	and	'195.158.0.10'
and source not between 	'87.237.232.0'	and	'87.237.239.255'
and source not between 	'217.30.160.0'	and	'217.30.175.255'
and source not between 	'94.158.48.3'	and	'94.158.48.3'
and source not between 	'80.80.208.0'	and	'80.80.223.255'
and source not between 	'89.236.192.0'	and	'89.236.255.255'
and source not between 	'62.209.128.0'	and	'62.209.143.255'
and source not between 	'62.209.144.0'	and	'62.209.151.255'
and source not between 	'10.0.0.0'	and	'10.255.255.255'
and source not between 	'172.0.0.0'	and	'172.255.255.255'
and source not between 	'192.168.0.0'	and	'192.168.255.255'
and source not between 	'127.0.0.0'	and	'127.255.255.255'
and source not between 	'0.0.0.0'	and	'0.0.0.0'
and source not between 	'62.209.152.0'	and	'62.209.159.255'
group by 
source, destination
order by 1
compute sum(sum(convert(float,traffic))/1024.0/1024.0),sum (sum(convert(float,traffic)))


но почему то условия не совсем срабатывают
в результате проходят те IP которые не должны ((


IP IP2 MB BYTE
10.6.24.1 89.236.242.125 0.169029235839844 177240
10.99.215.55 89.236.242.125 0.000295639038085938 310
6 май 11, 09:32    [10614542]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
IP лучше преобразовать в число, где то уже встречалось на форуме поищите, а так вы проверяете вхождение текста в диапазон.
6 май 11, 09:41    [10614601]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
718,

хоть бы выделили строки, которые запрещают эти IP. В глазах же рябит!
Кстати, в запросе никакого IP и IP2 нет?

Правильнее было бы собрать границы BETWEEN в производную таблицу (или CTE, что одно и то же или даже в нормальную таблицу)
и написать NOT EXISTS() вместо необозримой кучи BETWEENов
6 май 11, 09:44    [10614622]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
проверяю between ом
или это не совсем правильно????
а на счет конвертации пробовал все равно что то не срабатывает
6 май 11, 09:48    [10614643]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
iap,

вы правы я думал над этим
но все же интересно должен же быть другой выход
6 май 11, 09:51    [10614655]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
718
проверяю between ом
или это не совсем правильно????
а на счет конвертации пробовал все равно что то не срабатывает
Что больше - '10.6.24.1' или '10.11.24.1'?
Как сравниваются строки между собой знаете?
6 май 11, 09:54    [10614668]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
718
проверяю between ом
или это не совсем правильно????
а на счет конвертации пробовал все равно что то не срабатывает


Предоставьте скрипты создания таблиц с тестовыми данными, просто самому лень воять, дальше будем решать.
6 май 11, 09:54    [10614673]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
iap
718
проверяю between ом
или это не совсем правильно????
а на счет конвертации пробовал все равно что то не срабатывает
Что больше - '10.6.24.1' или '10.11.24.1'?
Как сравниваются строки между собой знаете?


'10.6.24.1' или '10.11.24.1' эти значения не входящий в этот диапазон not between '10.0.0.0' and '10.255.255.255'
6 май 11, 10:01    [10614692]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
angel_zar,

USE [CRM]
GO

/****** Object: Table [dbo].[FLOW_TRAFFIC] Script Date: 05/06/2011 11:07:40 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[FLOW_TRAFFIC](
[ID] [int] IDENTITY(1,1) NOT NULL,
[IP_network] [varchar](50) NULL,
[FileName] [varchar](50) NULL,
[Source] [varchar](50) NULL,
[Destination] [varchar](50) NULL,
[Traffic] [varchar](50) NULL,
[Type] [tinyint] NULL,
CONSTRAINT [PK_FLOW_TRAFFIC] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
6 май 11, 10:06    [10614722]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
718
iap
пропущено...
Что больше - '10.6.24.1' или '10.11.24.1'?
Как сравниваются строки между собой знаете?


'10.6.24.1' или '10.11.24.1' эти значения не входящий в этот диапазон not between '10.0.0.0' and '10.255.255.255'
Это не ответ на вопрос "что больше?".
Я Вас удивлю, но
'10.6.24.1' > '10.255.255.255' 
6 май 11, 10:10    [10614751]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
718
пропущено...


'10.6.24.1' или '10.11.24.1' эти значения не входящий в этот диапазон not between '10.0.0.0' and '10.255.255.255'
Это не ответ на вопрос "что больше?".
Я Вас удивлю, но
'10.6.24.1' > '10.255.255.255' 
Но
'010.006.024.001' < '010.255.255.255'
как Вы и ожидаете.
6 май 11, 10:11    [10614762]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
iap,

понятно спасибо
а как быть то??
6 май 11, 10:17    [10614797]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
718
iap,

понятно спасибо
а как быть то??
Сказано же - преобразовать строковое представление IP в числовое.
Это же четырёхбайтовое целое число на самом деле. Вот и сравнивайте в виде чисел.
Или выравнивайте лидирующими нулями каждый компонент до трёх символов.
Или ещё придумайте что-нибудь.
6 май 11, 10:23    [10614842]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
718
iap,

понятно спасибо
а как быть то??


; WITH C 
AS
(
 SELECT  '192.168.10.1' AS SIP UNION ALL
 SELECT  '192.168.10.2' AS SIP UNION ALL
 SELECT  '192.168.10.3' AS SIP 
 )
 
 SELECT 
  CAST( PARSENAME(SIP,4) AS BIGINT ) * 16777216 + CAST( PARSENAME(SIP,3) AS BIGINT ) * 256* 256 +CAST( PARSENAME(SIP,2) AS BIGINT ) * 256  + CAST( PARSENAME(SIP,1) AS BIGINT ) AS IP
 FROM C 
6 май 11, 10:38    [10614965]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
fnIPSubnet: 9280409
Другой подход: 10215467 (с среднем быстее, но менее стабильно)
6 май 11, 23:08    [10619806]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом что не так (((  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
есть значение address_min=083.221.184.000 и address_max=083.221.187.255 как вставить в таблицу данные которые между минимальной и максимальной
12 май 11, 16:47    [10643007]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить