Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Общий вопрос по SQL / 6 сообщений из 6, страница 1 из 1
27.09.2002, 17:37
    #32053788
Buxxter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общий вопрос по SQL
Помогите решить проблему. Суть: есть две таблицы со связью 1:М
Objects
id Name
1 Object 1
2 Object 2

Attributes
ObjectID AName AValue
1 Owner Microsoft
1 Address USA
2 Owner ABBYY
2 Address Ukraine

Задача: необходимо получить при помощи SQL-запроса результат в виде:
Results
id Name Owner Address
1 Object 1 Microsoft USA
2 Object 2 ABBYY Ukraine
Как это сделать???
...
Рейтинг: 0 / 0
27.09.2002, 17:52
    #32053798
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общий вопрос по SQL
В оригенале таблици слегка не правильно построил ты! А так итог такой должен быть!
Код: plaintext
1.
2.
3.
4.
SELECT a.id, a.Name, b.ObjectID, b.AName, b.AValue
FROM Objects a, Attributes b
WHERE
a.id=b.ObjectID
...
Рейтинг: 0 / 0
27.09.2002, 18:29
    #32053814
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общий вопрос по SQL
Да, структурка не очень удачная... соответственно и запросец не дешевый:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT Distinct tbl.iden, tbl.descr, 
	(Select Val
	 From temptest
	 Where temptest.PK = tbl.iden
	  AND fl_nm = 'ovn') as Owner,
	(Select Val
	 From   temptest
	 Where temptest.PK = tbl.iden
	  AND fl_nm = 'adr') as Adress
FROM   temptest INNER JOIN tbl 
  ON   temptest.PK = tbl.iden

я тренировался на своих тестовых таблицах, потому имена отличаются от ваших.. tbl первая ваша temptest вторая... ovn это Owner... adr .... Повторюсь, на больших данных запрос будет мендленный ... измените структуру данных или используйте для работы с этой структурой ХП.
...
Рейтинг: 0 / 0
27.09.2002, 18:31
    #32053815
Buxxter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общий вопрос по SQL
Все именно так и должно быть. То, что во второй таблице Attributes находится в столбце как значение, должно в третьей быть в качестве самого столбца. По-моему тут нужно строить перекрестный запрос, а не простую выборку. Только вот как это делается, я не знаю.
...
Рейтинг: 0 / 0
27.09.2002, 18:40
    #32053818
Buxxter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общий вопрос по SQL
To MichaelGK.
> fl_nm = 'ovn' fl_nm = 'adr'
А если наперед не известно, сколько будет разных значений во второй таблице, т.е. таблица результат будет динамически меняться в зависимости о количества различных значений в столбце второй таблице?
...
Рейтинг: 0 / 0
30.09.2002, 09:56
    #32053992
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общий вопрос по SQL
При такой постановке задачи тебе дали самый правильный ответ! Если его немножко переделать, станет покороче
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT obj.id, obj.Name, atr1.AValue as Owner, atr2.AValue as Address
FROM Objects obj, Attributes atr1, Attributes atr2
WHERE
atr1.ObjectID=obj.id
AND
atr1.AName= "Owner" 
AND
atr2.ObjectID=obj.id
AND
atr2.AName= "Address" 
Так что - дерзайте!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Общий вопрос по SQL / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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