|
|
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Две таблицы, связь один-ко-многим, надо сконструировать VIEW чтобы показывал запись из главной плюс поле из подчиненной первой подходящей записи. Подробнее: табл. Акт (ID*, Номер) табл. Люди (ID*, АктСсылка, Фамилия) К акту относятся несколько людей. VIEW должен показывать только одну строку: View1 (Акт.ID, Номер, Фамилия) причем 'Фамилия' - первый людь из данного акта. В идеале вижу вот такой запрос: SELECT Акт.ID, Акт.Номер, p.Фамилия FROM Акт INNER JOIN (SELECT Люди.АктСсылка, Люди.Фамилия FROM Люди ORDER BY Люди.ID) p ON Акт.ID=p.АктСсылка но он не работает... MSSQL7 (в конструкторе VIEW выдает ошибку что-то типа Люди не может быть классификатором для поля) Я не шибко силен в SQL но я не нашел правила, которое нарушалось бы моим запросом. Может, кто подскажет, в чем я неправ? Может, кто подскажет другой вариант решения? Буду премного :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:32:41 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
SELECT A.ID, A.Номер, P.Фамилия FROM Акт as A INNER JOIN Люди AS P ON A.ID=P.АктСсылка WHERE P.ID = (SELECT Min(X.ID) FROM Люди AS X WHERE X.АктСсылка=A.ID) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:43:23 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Связь n:n организуется введением еще одной таблицы из внешних ключей - где у Вас эта таблица Приведите надор данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:46:26 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
блин я пропустил, там вложенный запрос начинается так: (SELECT TOP 1 ...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:53:23 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
To funikovyuri: >>Связь n:n организуется ... Где вы увидели связь многие-ко-многим? Извините, но Вы уверены, что правильно поняли моё описание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:56:01 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Надо примерно так: SELECT [Акт].ID, [Акт].[Номер], (SELECT TOP 1 [Фамилия] FROM [Люди] WHERE [АктСсылка] = [Акт].ID ORDER BY [Люди].ID) AS Фамилия FROM Акт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:23:40 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
To av2000: Спасибо, я так пробовал, но из табл. Люди мне нужно не только Фамилию, но много других полей. Т.е. надо её всё равно соединять с табл. Акт либо целиком, либо как результат SELECTa. Думаю дальше. Вариант Flint-San подходит наиболее, только в вопросе производительности он как-то ... тяжеловат... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 13:13:55 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Тогда так: SELECT [Акт].ID, [Акт].[Номер], (SELECT TOP 1 [Люди].ID FROM [Люди] WHERE [АктСсылка] = [Акт].ID ORDER BY [Люди].ID) AS l_id, l.Фамимлия, l.Адрес ... FROM Акт INNER JOIN Люди AS l ON l_id = l.[Люди].ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 13:30:34 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Ши-кар-но!!! Только я ещё не пробовал, щас попробую. Но мысль - просто атас! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 07:50:47 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Дык не получится так Поле l_id не будет видно в условии INNER JOIN Люди AS l ON l_id = l.[Люди].ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 10:08:18 |
|
||
|
Посоветуйте с запросом, пожалуйста!
|
|||
|---|---|---|---|
|
#18+
В конце маленькая ошибочка,нужно так: SELECT [Акт].ID, [Акт].[Номер], (SELECT TOP 1 [Люди].ID FROM [Люди] WHERE [АктСсылка] = [Акт].ID ORDER BY [Люди].ID) AS l_id, l.Фамимлия, l.Адрес ... FROM Акт INNER JOIN Люди AS l ON l_id = l.ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 10:22:34 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32072309&tid=1818507]: |
0ms |
get settings: |
11ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 335ms |

| 0 / 0 |
