Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по ADOQuery, синтаксис SQL?????   Найти похожие ветки 

 
Muhin-av   (2002-07-01 10:50) [0]

Уважаемые мастера, такая проблема: начал переделывать Аксесовского клиета на Делфифский, и в Аксесе был такой запрос:

SELECT Material.MaterialID,
------- вот моя проблема -----------------------------
IIf(IsNull([BeforUnionID]),[MaterialID],[BeforUnionID]) AS Шифр,
------------------------------------------------------
Material.MaterialName AS Наименование, Material.Unit AS [Ед изм], MaterialType.TypeName AS Тип
FROM Material INNER JOIN MaterialType ON Material.TypeID = MaterialType.TypeID
WHERE (((Material.TypeID)<>1))
ORDER BY IIf(IsNull([BeforUnionID]),[MaterialID],[BeforUnionID]), Material.MaterialName, Material.TypeID;

Почему-то в Делфи в ADOQuery, в тексте запроса не воспринимается оператор условия "iif ". Синтаксис SQL различается. Подскажите как этот IF пишется.


 
wicked   (2002-07-01 11:04) [1]

почитай в mssql books online про case...

а общий синтаксис такой:
case
when <условие 1> then <выражение 1>
when <условие 2> then <выражение 2>
.
.
.
else <выражение n>
end


 
Muhin-AV   (2002-07-01 11:34) [2]

Уважаемый wicked, я есть новичок в этом деле, не мог бы ты мой пример в этом синтаксисе показать. Очень на это надеюсь.


 
TSV   (2002-07-01 12:09) [3]

Да он тебе уже все написал...
select
...
,WorkPlace =
case
when h.IsDefault = 1 then CONVERT(varchar(30), "Основное место работы")
else CONVERT(varchar(30), "Дополнительное место работы")
end
...


Есть еще один вид CASE:
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

Вот пример (из BOL):
SELECT
...
,Category =
CASE type
WHEN "popular_comp" THEN "Popular Computing"
WHEN "mod_cook" THEN "Modern Cooking"
WHEN "business" THEN "Business"
WHEN "psychology" THEN "Psychology"
WHEN "trad_cook" THEN "Traditional Cooking"
ELSE "Not yet categorized"
END
...


А вообще - читай Books Online .


 
Delirium   (2002-07-01 12:09) [4]

> Muhin-AV

Уважаемый, давать примеры из Help-а, да ещё по элементарным вопросам, занятие скучное и неинтересное. Если я правильно понял вы переводите БД с ACCESS на MSSQL с соответствующей модификацией ПО. Для реализации выше означенного уловия в MSSQL достаточно функции ISNULL ( check_expression , replacement_value ), например:
select * from r_names
order by isNull(idSubSerie,id_name)

надо оговориться - поля должны быть одного типа.


 
Muhin-av   (2002-07-01 12:45) [5]

Вам хорошо- вы умные. Все приводите свои примеры. Но неужели трудно было для таких как я, показать, как должен был выглядеть мой вопрос в правильном написании.


 
TSV   (2002-07-01 13:18) [6]

Это из серии "разжевали, в рот положили, а он и глотать не хочет"...

select
m.MaterialID
,Shifr =
case
when BeforUnionID is null then m.MaterialID
else BeforUnionID
end
,m.MaterialName
,m.Unit
,mt.TypeName
from Material m
inner join MaterialType mt ON m.TypeID = mt.TypeID
where m.TypeID <> 1
...


ЗЫ
Учись думать сам, а не орать "Я не могу, сделайте за меня..."



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
3-70635
ASM
2002-07-01 15:20
2002.07.22
FormattedMemo?


7-70941
Snake2000
2002-05-01 21:33
2002.07.22
Геймпад Sega Genesis и PC


1-70782
BlackSun
2002-07-10 01:34
2002.07.22
Программно нажать ссылку в TWebBrowser


1-70758
Дремучий
2002-07-09 13:40
2002.07.22
хочу сделать format main.pas /1.cfg, дайте ссылки


3-70623
Telly F
2002-06-27 11:12
2002.07.22
Как просмотреть план выполнения запроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский