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

Откуда:
Сообщений: 2
Есть 2 таблицы dbo.Style и dbo.StyleHouseType. В конечном итоге нужно получить String строку с разделителем |
Пример: Style,style|Style.style2

Выборка в строке должна быть в таком порядке
1)Select Style.Code
FROM
dbo.StyleHouseType
INNER JOIN dbo.Style
ON StyleHouseType.StyleId = Style.StyleId
WHERE
Style.StyleId = 30
2)
SELECT Style.Code
FROM
dbo.StyleHouseType
INNER JOIN dbo.Style
ON StyleHouseType.StyleId = Style.StyleId
WHERE
HouseTypeId = 2
ORDER BY Code
3)
SELECT Style.Code
FROM
dbo.StyleHouseType
INNER JOIN dbo.Style
ON StyleHouseType.StyleId = Style.StyleId
WHERE
HouseTypeId = 1
ORDER BY Code

4)SELECT Style.Code
FROM
dbo.StyleHouseType
INNER JOIN dbo.Style
ON StyleHouseType.StyleId = Style.StyleId
WHERE
HouseTypeId IN ('4', '5')

Сам вопрос: как объединить эти запросы в 1 с сохранением порядка выборки. Или как получить в результате эту выборку в строку ?
Заранее спасибо.
14 мар 13, 19:52    [14049589]     Ответить | Цитировать Сообщить модератору
 Re: Порядок выборки  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37224
select
    a.Code
from (
    Select Style.Code, 1 as Tag
    FROM
    dbo.StyleHouseType
    INNER JOIN dbo.Style
    ON StyleHouseType.StyleId = Style.StyleId
    WHERE
    Style.StyleId = 30
    union all
    SELECT Style.Code, 2 as Tag
    FROM
    dbo.StyleHouseType
    INNER JOIN dbo.Style
    ON StyleHouseType.StyleId = Style.StyleId
    WHERE
    HouseTypeId = 2
    --ORDER BY Code
    union all
    SELECT Style.Code, 3 as Tag
    FROM
    dbo.StyleHouseType
    INNER JOIN dbo.Style
    ON StyleHouseType.StyleId = Style.StyleId
    WHERE
    HouseTypeId = 1
    --ORDER BY Code
    union all
    SELECT Style.Code, 4 as Tag
    FROM
    dbo.StyleHouseType
    INNER JOIN dbo.Style
    ON StyleHouseType.StyleId = Style.StyleId
    WHERE
    HouseTypeId IN ('4', '5')

) a
order by a.Tag, a.Code
14 мар 13, 19:55    [14049599]     Ответить | Цитировать Сообщить модератору
 Re: Порядок выборки  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Iuliia_Y,
1) каждый селект возвращает одну строку или несколько?
2) если есть селект, возвращающий несколько строк - какое значение должно попасть в итог? первое? все?
3) если каждый селект возвращает много строк - каким образом увязать их в одну строку? по какому общему признаку?
14 мар 13, 20:04    [14049615]     Ответить | Цитировать Сообщить модератору
 Re: Порядок выборки  [new]
Iuliia_Y
Member

Откуда:
Сообщений: 2
Cygapb-007
Iuliia_Y,
1) каждый селект возвращает одну строку или несколько?
2) если есть селект, возвращающий несколько строк - какое значение должно попасть в итог? первое? все?
3) если каждый селект возвращает много строк - каким образом увязать их в одну строку? по какому общему признаку?



1)Каждый Select возвращает от 1 до 20 строк
2) в итог - string строку должны попасть все результаты только в определенной последовательности по закономерности Select1+Select2+Select3=Select4
Как увязать я и сама не знаю. Нужен результат такого формата:
SiteAccess.FlatAreaEasyAccessRoads|SiteAccess.MountainRegion|SiteAccess.SlightlyCongestedRoads|SiteAccess.NarroworHillsideArea|Site
14 мар 13, 20:09    [14049623]     Ответить | Цитировать Сообщить модератору
 Re: Порядок выборки  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Вероятно, должно быть что-то вроде этого:
select s1.code+'|'+s2.code+'|'+s3.code+'|'+s4.code
from (<select1>) s1
cross join (<select2>)s2
cross join (<select3>)s3
cross join (<select4>)s4
14 мар 13, 20:15    [14049645]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить