Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по созданию НД из трех таблиц   Найти похожие ветки 

 
Stelius   (2003-04-05 22:23) [0]

Мастера, требуется помощь.
Дано:
- таблица фирм (Tbl1): <индекс_фирмы> | <название фирмы>;
- таблица партнеров (Tbl2): <индекс_партнера> | <название_партнера>;
- таблица связи (Tbl3): <индекс_фирмы> | <индекс_партнера>.
Необходимо в одном DBGrid"е отобразить фирмы и соответствующих им партнеров.
Примечание: при использовании следующего запроса:

SELECT Tbl1.*, Tbl2.<название_партнера>
FROM TBL1, TBL2
WHERE Tbl2.<индекс_партнера> in (SELECT <индекс_партнера>
FROM Tbl3
WHERE Tbl3.<индекс_фирмы> = Tbl2.<индекс_фирмы>)


в НД фирма отображается столько раз, сколько у нее партнеров. Нельзя ли как-нибудь сделать, чтобы фирма упоминалась 1 раз, а ее партнеры были перечислены через запятую в одной ячейке.
БД создана в IB, СУБД пишу в D6.


 
Stelius   (2003-04-06 11:56) [1]

Хм, либо вопрос задал тупой, либо ни у кого нет никах соображений на этот счет или же это в принципе не реализуемо?
P.S. в последней строчке кода в вопросе вкралась опечатка. Вместо:

WHERE Tbl3.<индекс_фирмы> = Tbl2.<индекс_фирмы>

следует читать:

WHERE Tbl3.<индекс_фирмы> = Tbl1.<индекс_фирмы>.





 
sniknik   (2003-04-06 18:19) [2]

как понимаю нужно перевернуть данные из столбца в строку, т.е.
"Фирма 1"
"Фирма 2"
"Фирма 3"
"Фирма 4"
...
в
"Фирма 1, Фирма 2, Фирма 3, Фирма 4"
так?

было бы на MSSQL сказал бы нужно писать функцию и делать через нее, а с IB незнаю может быть и нельзя.


 
Наталия   (2003-04-07 06:11) [3]

Сделай через хранимую процедуру



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-76993
NA
2003-04-09 14:31
2003.04.24
Проект


7-77181
Frakt
2003-03-04 22:14
2003.04.24
ISA


1-76985
KDenis
2003-04-13 18:47
2003.04.24
Как разбить файл?


3-76826
SiJack
2003-04-07 16:27
2003.04.24
MSAccess


7-77210
Андрусь
2003-03-05 10:26
2003.04.24
выставить/отменить для окон перерисовку при перетаскивании





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский