Форум: "Базы";
Текущий архив: 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.008 c