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

Вниз

обьединение таблиц   Найти похожие ветки 

 
uu   (2003-10-13 13:10) [0]

Подскажите возможноли sql запросом выбрать из
2ух таблиц по 2 колонки и врезультате получить 3 таблицу с 4я колонками
но так чтобы не было декартового произведения таблиц

например
SELECT Prihod.PrhSumm, Prihod.PrhKlient, Rashod.RzSumm, Rashod.RzKlient
FROM Prihod, Rashod

дает декартово произведение


 
Bob   (2003-10-13 13:18) [1]

Это конечно все класно, только подумай над вопросом: а как это все связано? С помощью твоего запроса ты получишь просто помойку. Есть в скуле такой оператор как JOIN. (Но это эсли ты хочешь получить таблицу связанных данных).


 
uu   (2003-10-13 13:20) [2]

втом то и дело что связанных данных не должно быть так как из
исходных таблиц записи добавляются и удаляются независимо


 
MsGuns   (2003-10-13 13:20) [3]

1.Без общего поля-ключа не получится
2.Если нужен просто НД (для отображения или репорта), то запрос,
если именно таблица, то запрос+TBatchMove или запросом создать таблицу нужной структуры, а туда запросом (через общий ключ) закатать записи. Если общего ключа нет, то формировать записи ручками и insert в новую таблицу из двух исходных.


 
Bob   (2003-10-13 13:28) [4]

Тогда вопрос: а нахрена все это надо? Объясни проблему конкретнее. А так собрать помойку из двух таблиц... Смысл не понятен.


 
uu   (2003-10-13 13:32) [5]

нет помойки как раз не надо!
надо вывести на один репорт колонки из двух НД
для этого и требуется получить единую таблицу из 4 колонок
но чтобы первые 2 колонки и последние 2 не были никак связаны
то есть заполнялись соответсвенно содержимому исходных таблиц


 
MsGuns   (2003-10-13 13:37) [6]

Связка OUTER JOIN


 
Bob   (2003-10-13 13:39) [7]

Ну если надо так надо. Попробуй конечно свой запрос, посмотри,что получиться. Если то что надо - поздравляю, если нет - придется тебе вязать это все.


 
uu   (2003-10-13 13:56) [8]

а что такое OUTER JOIN?
можно пример?


 
Наталия   (2003-10-13 13:56) [9]

Может быть, union тебе поможет?


 
uu   (2003-10-13 13:57) [10]

на OUTER ругается


 
uu   (2003-10-13 13:59) [11]

ясн OUTTER :)
но не пормогает :(
а что такое union?


 
Vlad   (2003-10-13 14:00) [12]

нет в парадоксе OUTER.
Тем более, что все равно с помощью него ты получишь произведение множеств.
А то, что ты хочешь, одним SQL запросом реализовать нельзя.


 
Наталия   (2003-10-13 14:01) [13]

uu © (13.10.03 13:59) [11]
Документацию почитай по SQL, наконец.


 
Vlad   (2003-10-13 14:02) [14]

>Наталия © (13.10.03 14:01) [13]
Что-то никак не соображу, а union каким образом автору поможет ?


 
Bob   (2003-10-13 14:11) [15]

UNION не поможет однозначно, т.к. выдаст простыню в две колонки, а не в четыре.


 
Наталия   (2003-10-13 14:12) [16]

SELECT Prihod.PrhSumm, Prihod.PrhKlient, 0, 0
from Prihod
union all
select 0, 0, Rashod.RzSumm, Rashod.RzKlient
FROM Rashod


 
DenK_vrtz   (2003-10-13 14:15) [17]

>>надо вывести на один репорт колонки из двух НД

так какие проблемы?!
Делаешь два независимых запроса.
Если это QR, то указываешь в свойстве DataSet отчета тот DataSet, у которого записей больше(думаю, объяснять не надо почему!).
А дальше как обычно - через QRDBText"ы.

Или все в Excel!


 
MsGuns   (2003-10-13 14:19) [18]

select T1.F1 as FU1, T1.F2 as FU2, T2.F1 as FU3, T2.F2 as FU4
from Table1 T1 FULL OUTER JOIN Table2 ON T1.F1=T2.F1
order by ...

(поля F1 в примере однотипные)


 
uu   (2003-10-13 15:00) [19]

Наталья, в Вашем примере
Type mismatch in expression.


 
Vlad   (2003-10-13 15:06) [20]

>uu © (13.10.03 15:00) [19]
Поля д.б. однотипные в обоих селектах.


 
uu   (2003-10-13 15:27) [21]

и как быть?
у меня не однотипные сумма - числовой
а клиент - строка


 
DenK_vrtz   (2003-10-13 15:31) [22]

>и как быть?

пиво пить и типы приводить


 
MsGuns   (2003-10-13 15:32) [23]

>Bob © (13.10.03 14:11) [15]
>UNION не поможет однозначно, т.к. выдаст простыню в две колонки, а не в четыре.

Колонок будет 4, а записей N+M, а надо MAX(N,M). Т.е. надо как бы слить по паре колонок из двух таблиц в одну. А вместо UNION можно и так:

SELECT C.cid, C.cname, P.pid, P.pname
FROM CST C FULL OUTER JOIN PRO P ON C.cname=P.pname


А вот получить то, что надо по сабжу пока не соображу как ;((


 
Vlad   (2003-10-13 15:45) [24]

Впринципе можно сделать 2 отдельных DataSet"a и результат из обоих в цикле поместить в ClientDataSet.



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

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

Наверх





Память: 0.49 MB
Время: 0.011 c
14-8668
ZeroDivide
2003-10-13 16:19
2003.11.03
Если не переключать раскладку, то иногда можно получить....


1-8389
DolginD
2003-10-21 16:09
2003.11.03
Как грамотно организовать много потоков


4-8719
Alex_Y
2003-08-29 12:32
2003.11.03
Передача переменных в работающее приложение


1-8388
Chaynik
2003-10-21 07:34
2003.11.03
Вопрос о массиве.


1-8361
TolikM
2003-10-22 16:22
2003.11.03
установка XML программно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский