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

Вниз

Один DBGrid на двух Select   Найти похожие ветки 

 
Шурик Ш   (2002-09-05 15:52) [0]

А можно как-нибудь средствами языка SQL выполнить два Select"а "одновременно" (в одном запросе) так, чтобы на их основе образовать один DBGrid? С тем условием, что названия колонок и их типов одинаковые, да и строятся они, вообщем-то, по одной таблице, только по разным условиям.


 
Val   (2002-09-05 16:01) [1]

два Select"а "одновременно"
выражайтесь точнее, вы имеете ввиду union?


 
Виктор Щербаков   (2002-09-05 16:03) [2]


> да и строятся они, вообщем-то, по одной таблице, только
> по разным условиям.

Ну тогда объедини эти условия по OR.


 
Шурик Ш   (2002-09-05 16:35) [3]

Виноват! Сам не знаю чего хочу!


 
Val   (2002-09-05 17:24) [4]

это не особо помогает в решении проблемы. Не знаете что хотите - не задавайте вопроса. Не знаете как объяснить - другое дело - давайте начальные данные и желаемый результат.


 
Nikolai_S   (2002-09-05 17:33) [5]

Я думаю, что нужно LEFT (RIGHT) JOIN использовать в данном случае:

SELECT T1.NAME, T1.MyField, T2.MyField FROM
(SELECT * FROM MyTable WHERE <условие на первую колонку>) AS T1 LEFT JOIN (SELECT * FROM MyTable WHERE <условие на вторую колонку>) AS T2 ON T1.КлючевоеПоле=T2.КлючевоеПоле
ORDER BY T1.NAME


 
VAleksey   (2002-09-05 18:12) [6]

вообще для "С тем условием, что названия колонок и их типов одинаковые, да и строятся они, вообщем-то, по одной таблице, только по разным условиям."
используют конструкцию UNION ю Например
SELECT *
FROM Table1
WHERE ....
UNION
SELECT *
FROM Table1
WHERE ....

По желанию можно добавить Order By.
Но жто для локальных таблиц. Подробнее смотри LocalSQL.hlp.


 
ЮЮ   (2002-09-06 03:41) [7]

UNION ,вообще-то, нужен для объединения разных таблиц или формирования строк с "добавлением" разного значения в "дополнительное" поле.
А в данном случаем, возможно, хватит объединения условия выборки?


 
VAleksey   (2002-09-06 09:53) [8]

SELECT custno, company

FROM customers
UNION
SELECT custno, company

FROM old_customers
вместо old_customer можно поставить customer и изменить пункт WHERE :).


 
ЮЮ   (2002-09-06 10:04) [9]

to VAleksey © (06.09.02 09:53)
Автор : С тем условием, что названия колонок и их типов одинаковые, да и строятся они, вообщем-то, по одной таблице , только по разным условиям

Я: UNION ,вообще-то, нужен для объединения разных таблиц

ТЫ: :)

К вышесказанному могу ещё добавить,что UNION ещё нужен для объединения в одном поле разных полей одной и той же таблицы.


 
Nikolai_S   (2002-09-06 10:10) [10]

Зря мы спорим, если не знаем, что автор вопроса хочет. Он же сам сказал - не знает что хочет. Пускай сформулирует вопрос более конкретно. Ну а вообще зачем UNION, если таблица одна и та же. Можно просто условия через OR указать и все. Я понял, что ему нужно в DBGrid вывести две колонки, которые фактически представляют одно поле в заданной таблице, но условия, по которым отбираются значения в 1-ю и 2-ю колонки DBGrid - разные.


 
Val   (2002-09-06 10:30) [11]

извините, это клуб гаданий на кофейной гуще? ;)


 
Anatoly Podgoretsky   (2002-09-06 10:38) [12]

Запугали пачана своими гаданиями и советами :-)


 
Nikolai_S   (2002-09-06 10:42) [13]

Да автор вопроса уже в принципе не важен. Здесь уже интересная полемика пошла, автор только лишь посеял какое-то полусгнившее зерно, а в такой насыщенной почве что угодно прорастёт :-).

Этим мне этот форму и нравиться...


 
Шурик Ш   (2002-09-06 16:21) [14]

Пора внести ясность...
Смотрите...
Хочу получить:
Есть "деревянная" структура (дерево) в БД. Когда все ветви закрыты в DBGrid попадают только элементы верхнего уровня, благо есть поле Parent, которое говорит о пренадлежности родителю. Итак, выбираются все Parent = 0, получается:
1
2
3
4
5
Теперь я хочу представить развертывание дерева прямо в DBGrid. Т.е. развернутый узел помещает свои элементы прямо под собой. Пример - план счетов в 1С-предриятии 7.7, может кто видел.
Хочу получить:
1
1.1
1.2
1.3
2
3
4
5
Но хочу остаться в рамках DBGrid, т.е. делать все это надо одним запросом.
Как?

А по поводу "полусгнившего семени", это Вы зря так.


 
Wolf226   (2002-09-06 16:43) [15]

Похоже прийдется делать хранимую процедуру


 
Шурик Ш   (2002-09-06 16:51) [16]

А если я работаю не с SQL, а с DBF, то где я ее буду хранить?


 
Val   (2002-09-06 17:01) [17]

в приложении


 
Шурик Ш   (2002-09-06 17:10) [18]

А что такое хранимая процедура?


 
Val   (2002-09-06 17:27) [19]

ХП - понятие клиент-серверной технологии работы с БД. В вашем случае - обыкновенные процедуры приложения. Выше имелось ввиду, что одним запросом задачу не решить.


 
Шурик Ш   (2002-09-06 17:52) [20]

Понял. Спасибо!


 
Nikolai_S   (2002-09-06 20:09) [21]

Тут не все так просто может быть как кажется. Можно конечно сделать запрос:

SELECT * FROM table WHERE (parent=0) or (parent=1)

Но где гарантия, что записи отсортируются правильно, т.е. что все будет выглядить так:
1
1.1
1.2
2
3

Если записи добавляли в таблицу в таком порядке:
1
2
1.1
1.2
3
1.3

то они и будут выданы в таком порядке. По какому полю или критерию их отсортировать? В этом может быть проблема



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

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

Наверх




Память: 0.49 MB
Время: 0.007 c
1-85442
Skif
2002-09-16 08:02
2002.09.26
Переименовать по маске


1-85504
kazaam
2002-09-17 09:16
2002.09.26
Есть ли замена таймеру?


1-85440
Gayrus
2002-09-14 12:47
2002.09.26
Связь.


3-85348
Nikolai_S
2002-09-02 17:24
2002.09.26
Доступ из MS Access к данным из других СУБД с пом. SQL


14-85693
France
2002-09-02 09:25
2002.09.26
Переименовать Пуск Программы <Группа> <ярлык>





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