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

Откуда:
Сообщений: 73
Всем привет. Есть две таблицы. Одна таблица table1 содержит цвета, вторая таблица содержит три колонки. В каждой колонке хранится цвет. Т.е. каждая запись содержит 3 цвета. Если бы был один цвет, я бы сделал такую выборку:
Select table1.color From table1,table2 Where table2.id_color=table.id
Но как быть с тремя цветами?
9 дек 12, 21:59    [13603399]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
titans
Member

Откуда:
Сообщений: 73
Немного ошибся в выборке:
Select table1.color From table1,table2 Where table2.id_color=table1.id
9 дек 12, 22:01    [13603404]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
A_Cross
Member

Откуда:
Сообщений: 1355
А собственно какую выборку вам необходимо сделать?
9 дек 12, 22:31    [13603457]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
titans
Member

Откуда:
Сообщений: 73
Мне нужно вывести три цвета из таблицы table2
Вот как-то так:
Select table1.color,table1.color,table1.color From table1,table2 Where table2.id_color=table1.id AND table2.id_color2=table1.id ANDtable2.id_color3=table1.id
Но этот запрос не выведет тех цветов которые находятся в строке... Может дополнительную таблицу вывести?
9 дек 12, 23:43    [13603626]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
1. Таблицу в запросе можно указывать более одного раза.
2. Чтобы это сделать, нужно использовать алиасы таблиц.
3. Пользуйтесь джойнами, а не перечислением таблиц через запятую.
9 дек 12, 23:49    [13603648]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
titans
Member

Откуда:
Сообщений: 73
Алиасы подходят. а вот джоины нет, мне нужно горизонтали расширятся. Спасибо.
9 дек 12, 23:53    [13603661]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
titans
Алиасы подходят. а вот джоины нет, мне нужно горизонтали расширятся. Спасибо.
Именно джойны.
Вы покажите, что у вас за таблицы (только оформляйте тегом SRC, а то не видно, что вы там написали)
10 дек 12, 00:03    [13603702]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
Gwa
Guest
titans
мне нужно горизонтали расширятся.

Это как?
Переведите на русский..
10 дек 12, 00:15    [13603760]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
titans
Алиасы подходят. а вот джоины нет, мне нужно горизонтали расширятся. Спасибо.
select
 c1.color,
 c2.color,
 c3.color
from
 table2 t2 join
 table1 c1 on c1.id_color = t2.id1 join
 table1 c2 on c2.id_color = t2.id2 join
 table1 c3 on c3.id_color = t2.id3
10 дек 12, 00:15    [13603763]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
_bob
Member

Откуда: Москва
Сообщений: 1654
по горизонтали расширяться - это динамический SQL
сначала проход по строкам таблицы формирует вам sql-строку, потом вы эту строку выполняете

на использование динамического SQL есть масса ограничений

предлагаю вам пересмотреть горизонтальность выборки, налицо проблема в проектировании, задачу можно решить грамотно
10 дек 12, 11:01    [13604866]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
_bob
по горизонтали расширяться - это динамический SQL
Так у него 3 колонки и 3 цвета.
По моему, тут всё намного проще.
10 дек 12, 11:09    [13604941]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
titans
Member

Откуда:
Сообщений: 73
Тут действительно все проще оказалось.
Select c1.Name,c2.Name,c3.Name
From Table1 as c1, Table1 as c2, Table1 as c3, Table2 as c
Where c.id_color1=c1.id AND c.id_color2=c2.id AND c.id_color3=c3.id
10 дек 12, 13:37    [13606288]     Ответить | Цитировать Сообщить модератору
 Re: Сделать множественную выборку  [new]
titans
Member

Откуда:
Сообщений: 73
К стати такой вопрос, что в данном случае будет лучше джоины, или как я написал? И почему?
10 дек 12, 13:38    [13606301]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить