Форум: "Базы";
Текущий архив: 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.132 c