powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с объединяющим запросом
4 сообщений из 4, страница 1 из 1
Помогите пожалуйста с объединяющим запросом
    #32070504
Label
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понимаю, что дело наверное в организации данных, но все же...
Есть таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE Tbl1 (
  [userId1]      int                   NULL REFERENCES Tbl2([userId]),
  [opinion1]     varchar( 1000 )         NULL, 
  [userId2]      int                   NULL REFERENCES Tbl2([userId]),
  [opinion2]     varchar( 1000 )         NULL, 
  [userId3]      int                   NULL REFERENCES Tbl2([userId]),
  [opinion3]     varchar( 1000 )         NULL, 
  ........ 
  [userIdN]      int                   NULL REFERENCES Tbl2([userId]),
  [opinionN]     varchar( 1000 )         NULL, 
  ........

В данной таблице на момент выборки всего одна запись.
Есть таблица - список пользователей:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE Tbl2 (
  [userId]       int IDENTITY ( 1 ,  1 ) PRIMARY KEY CLUSTERED,
  [FirstName]    varchar( 32 )         NOT NULL,  -- Имя
 
  [LastName]     varchar( 32 )         NOT NULL,  -- Фамилия
 
  ..... и т.д.

Проблема: не могу объединить две таблицы одним запросом чтобы было что-то вроде:
Код: plaintext
SELECT Tbl1.[userId1], Tbl2.[LastName], Tbl1.[opinion1], Tbl1.[userId2], Tbl2.[LastName], Tbl1.[opinion2], ... и т.д.

Т.е. в выборке получить фамилию для конкретного userIdN.
Причем некоторые из Tbl1.[userIdN] могут быть NULL (для них соответственно фамилий не надо)...
Помогите пожалуйста...
...
Рейтинг: 0 / 0
Помогите пожалуйста с объединяющим запросом
    #32070514
Alex Alexeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT 
Tbl1.[userId1], 
U1.[LastName], 
Tbl1.[opinion1], 
Tbl1.[userId2], 
U2.[LastName], 
Tbl1.[opinion2], ... и т.д.
from
Tbl1 
left join Tbl2 U1 on Tbl1.userId1 = U1.userId
left join Tbl2 U2 on Tbl1.userId2 = U2.userId
... и т.д.

но дело наверное все-таки в организации данных
...
Рейтинг: 0 / 0
Помогите пожалуйста с объединяющим запросом
    #32070516
Flint-San
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Глупостью было бы пытаться тебе написать запрос...Да ты и сам уже понимаешь суть своей проблеммы. Слышал когда-нибудь про правила нормализации? 1,2,3,4,5 нормальная форма тебе о чем-нибудь говорит?
Для начала почитай ка тут:
BOL:
Creating and Maintaining Databases\Normalization
удели внимание своей Tbl1 и подсчитай сколько правил ты нарушил: Achieving a Well-Designed Database

В инете щас много по правилам нормализации есть.
http://bbd.net.ru/modules.php?op=modload&name=Subjects&file=index&req=viewpage&pageid=46
...
Рейтинг: 0 / 0
Помогите пожалуйста с объединяющим запросом
    #32070584
Label
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Alex Alexeev: большое спасибо, все вроде заработало.
To Flint-San: да я понимаю, что надо все не так организовывать, тогда одним join-ом можно было бы обойтись. Но так проще редактировать данные на web-странице - один опрос юзверей - одна строка. В конце концов N всегда будет ограничено 10, а юзверей (Tbl2) никогда не будет больше 150... А за ссылку - спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с объединяющим запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]