Russian Qt Forum

Qt => Базы данных => Тема начата: Jkc от Сентябрь 21, 2006, 17:16



Название: Как вставить 2 QSqlSelectCursor а в один DataTable ?
Отправлено: Jkc от Сентябрь 21, 2006, 17:16
Qt 3.3.4
Вот какое дело, мне нужно выбрать даные с четырёх таблиц и поместить эти данные в DataTable запрос выглядит так
 
Код:

cursor = new QSqlSelectCursor( "SELECT * FROM fdt_met, fdt_org WHERE fdt_met.flogin = fdt_org.foid UNION SELECT *  FROM fdt_sklad2 , fdt_inforg WHERE fdt_sklad2.flogin = fdt_inforg.foid");

datTabStore->setSqlCursor( cursor );
datTabStore->addColumn( "ftype",  "Тип",42);
-------
datTabStore->addColumn("forg", "Организация", 120);
datTabStore->refresh();
datTabStore->show();


Но с UNION работает не корректно, хотя по отдельности всё нормально. Можно ли как то выбрать данные двумя запросами а потом их вставить в таблицу или подскажите как лучше поступить в данной ситуации?
P.S. таблицы одинаковые.


Название: Как вставить 2 QSqlSelectCursor а в один DataTable ?
Отправлено: Tonal от Сентябрь 22, 2006, 06:59
Что значит "некорректно"?
Ты этот запрос в каком-нибудь менеджере выполнял?
У тебя точно количество и типы полей обоих запросов совпадают?


Название: Как вставить 2 QSqlSelectCursor а в один DataTable ?
Отправлено: Jkc от Сентябрь 22, 2006, 12:00
Не коректно это значит, что не все записи выводит. А поля и типы всё совпадает.


Название: Как вставить 2 QSqlSelectCursor а в один DataTable ?
Отправлено: bigirbis от Сентябрь 22, 2006, 14:09
А в менеджере действительно верно все записи выбирает?


Название: Как вставить 2 QSqlSelectCursor а в один DataTable ?
Отправлено: Jkc от Сентябрь 29, 2006, 17:54
Внимание правильный ответ
В запросе после UNION нужно дописать ALL

cursor = new QSqlSelectCursor( "SELECT * FROM fdt_met, fdt_org WHERE fdt_met.flogin = fdt_org.foid UNION ALL SELECT *  FROM fdt_sklad2 , fdt_inforg WHERE fdt_sklad2.flogin = fdt_inforg.foid");