powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Общий вопрос по SQL
6 сообщений из 6, страница 1 из 1
Общий вопрос по SQL
    #32053788
Buxxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите решить проблему. Суть: есть две таблицы со связью 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
Общий вопрос по SQL
    #32053798
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В оригенале таблици слегка не правильно построил ты! А так итог такой должен быть!
Код: 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
Общий вопрос по SQL
    #32053814
Фотография MichaelGK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, структурка не очень удачная... соответственно и запросец не дешевый:
Код: 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
Общий вопрос по SQL
    #32053815
Buxxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все именно так и должно быть. То, что во второй таблице Attributes находится в столбце как значение, должно в третьей быть в качестве самого столбца. По-моему тут нужно строить перекрестный запрос, а не простую выборку. Только вот как это делается, я не знаю.
...
Рейтинг: 0 / 0
Общий вопрос по SQL
    #32053818
Buxxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To MichaelGK.
> fl_nm = 'ovn' fl_nm = 'adr'
А если наперед не известно, сколько будет разных значений во второй таблице, т.е. таблица результат будет динамически меняться в зависимости о количества различных значений в столбце второй таблице?
...
Рейтинг: 0 / 0
Общий вопрос по SQL
    #32053992
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При такой постановке задачи тебе дали самый правильный ответ! Если его немножко переделать, станет покороче
Код: 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
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Общий вопрос по SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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