Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 10:57 01.07.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Мъка... мъка... MSSQL 2000 е пълна трагедия  
Автор headhunter (huntz orcxez)
Публикувано03.10.03 14:05



Онзи прекрасен ден реших да направя едно прекрасно view, в което има само 1 таблица.
SQL запитването имаше приблизително следния синтакс:
SELECT user_ID FROM orders WHERE ((order_date BETWEEN '09.09.2003' AND '30.09.2003') AND (user_ID IN(3, 4, 5)))

Е не щя!!! Ако го разбия на 2 запитвания, отделно BETWEEN и отделно IN си бачка. Пробвах и без BETWEEN, а по бабешката: order_date > 'dd.mm.yyyy' AND order_date < 'dd.mm.yyyy', пак не щя.

Елементарно запитване, което даже в Access заработи. Не говоря за PostgreSQL или Oracle - там си бачка без проблем.

За Бога! Кой е луд да им купува на тия софтуера?!?!?!

General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!


Тема Re: Мъка... мъка... MSSQL 2000 е пълна трагедиянови [re: headhunter]  
Авторzip (Нерегистриран)
Публикувано03.10.03 16:47



така пробва ли
SELECT EmployeeID FROM orders
WHERE ((OrderDate BETWEEN '2003-09-09' AND '2003-09-30') AND (EmployeeID IN(3, 4, 5)))



Тема Re: Мъка... мъка... MSSQL 2000 е пълна трагедиянови [re: zip]  
Автор headhunter (huntz orcxez)
Публикувано03.10.03 18:01



пробвах..
не зависи от количеството скоби, да му го...

е аз си реших проблема с повече от един селект, ама бива ли така?!
И не мога да разбера защо подобно запитване под Access бачка, а в MSSQL не.

както и да е.. той проблема беше преди 2 седмици. аз сега случайно влезнах в този клуб и реших да се ожаля.

General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!


Тема Re: Мъка... мъка... MSSQL 2000 е пълна трагедиянови [re: headhunter]  
Автор Пepин (овълчил се)
Публикувано03.10.03 20:07



А всъщност проблема какъв точно беше? Какво съобщение за грешка дава?

"Lie still and don't move and a bear won't hurt you" they said.


Тема Re: Мъка... мъка... MSSQL 2000 е пълна трагедиянови [re: Пepин]  
Автор headhunter (huntz orcxez)
Публикувано06.10.03 16:20



Ами ето примерно запитване:
SELECT ID_kokoshka FROM kokoshki WHERE (ID_kokoshka IN (1, 2, 3) AND (data_na_izlupwane BETWEEN '2003-09-01' AND '2003-09-30'))
И съобщението на MS-SQL за грешка:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Странното е, че като в IN клаузата подам само едно число, това работи без грешка. Или ако напиша само: SELECT ID_kokoshka FROM kokoshki WHERE data_na_izlupwane BETWEEN '2003-09-01' AND '2003-09-30' също работи. Значи ако имам в IN повече от едно число и ако използвам BETWEEN някакви дати - MS SQL умира. Няма логика за едно запитване да няма проблем с conversion of a char data type, а в друго да има. Ако използвам вместо BETWEEN - data_na_izlupwane > '2003-09-01' AND data_na_izlupwane < '2003-09-30' пак не ще.
Направих си една симулацийка на Access и една в PostgreSQL - бачка във всички случаи.

General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!


Тема Мъка... мъка... headhunter е пълна трагедиянови [re: headhunter]  
Автор Minavasht (случайно)
Публикувано06.10.03 16:35



За съжаление които не чете псува ...
ако беше отворил 'T-SQL' help-a 5 paragraph e
'BETWEEN
Specifies a range to test.

Syntax
test_expression [ NOT ] BETWEEN begin_expression AND end_expression

Arguments
test_expression

Is the expression to test for in the range defined by begin_expression and end_expression. test_expression must be the same data type as both begin_expression and end_expression.

NOT

Specifies that the result of the predicate be negated.

begin_expression

Is any valid Microsoft® SQL Server™ expression. begin_expression must be the same data type as both test_expression and end_expression.


end_expression

Is any valid SQL Server expression. end_expression must be the same data type as both test_expression and begin_expression.

AND

Acts as a placeholder indicating that test_expression should be within the range indicated by begin_expression and end_expression.
'

Хората са си специфицирали какво прави between. Ако не ти харесва не го използвай ... ако го искаш използвай cast. Но никои добър програмист не сравнява два различни типа надявайки се че auto-casta ще направи таман каквото иска тои. Позачети good coding practices. Това че Progress или бозата Access не те пляскат през ръцете нищо не значи. Попиши и на C така и после псувай C-то че не читаво ...

btw Oracle също иска да бъде кастнато

надявам се ти помогнах

Редактирано от Minavasht на 06.10.03 16:43.



Тема Re: Мъка... мъка... headhunter е пълна трагедиянови [re: Minavasht]  
Автор headhunter (huntz orcxez)
Публикувано06.10.03 18:21



Въх, че ме ухапа.
Съгласен съм по принцип с това, което си написал. Все пак като нещо изпищи, че не може да конвертира логично е да си помисля за каст. Пробвах и с CAST и с CONVERT - все същата дупа. И пак повтарям - на говното Access работи, на PostgreSQL също (а той определено не е говно), и на Oracle го тествах ('щото нещо ме амбицира ) и пак си бачка.
Все още обаче имам известни съмнения по въпроса, защо, когато викам само BETWEEN не ме пляска през ръцете, а когато в WHERE клаузата добавя IN ме пляска?

На C никога не съм псувал.

General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!


Тема Re: Мъка... мъка... MSSQL 2000 е пълна трагедиянови [re: headhunter]  
Автор Пepин (овълчил се)
Публикувано07.10.03 02:35



Хм. Ами при мен в аналогична ситуация - целочислено поле и поле дата - върви. Странно.

"Lie still and don't move and a bear won't hurt you" they said.


Тема Re: Мъка... мъка... MSSQL 2000 е пълна трагедиянови [re: headhunter]  
Автор Пepин (овълчил се)
Публикувано07.10.03 02:39



Значи следното query го пускам на pubs:

SELECT *
FROM sales
WHERE (stor_id IN (6380, 7066)) AND (ord_date BETWEEN '1-1-1900' AND '1-1-2100')

резултат:

stor_id ord_num ord_date qty payterms title_id
------- -------------------- ------------------------------------------------------ ------ ------------ --------
6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032
6380 722a 1994-09-13 00:00:00.000 3 Net 60 PS2091
7066 A2976 1993-05-24 00:00:00.000 50 Net 30 PC8888
7066 QA7442.3 1994-09-13 00:00:00.000 75 ON invoice PS2091

(4 row(s) affected)

Да не би да има нещо около формата на датите?

"Lie still and don't move and a bear won't hurt you" they said.


Тема я внимавай!нови [re: headhunter]  
Автор Topбaлaн (любопитко)
Публикувано07.10.03 08:39



пуснах твоето куири в Northwind и смених имената на полетата и датите за да пасват на таблицата.......
ами елементарно уотсън - работи ако конвертираш датите....

SELECT CustomerID
FROM Orders
WHERE (OrderDate BETWEEN CONVERT(DATETIME, '1996-08-08 00:00:00', 102) AND CONVERT(DATETIME, '1996-09-25 00:00:00', 102)) AND
(CustomerID IN (N'VINET', N'QUICK'))

така работи на пушка...))

а, пропуснах.....
защо работи в аксеса - защото там автоматичното конвертиране явно е уцелило типовете

Редактирано от Topбaлaн на 07.10.03 08:40.




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.