powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Помогите переделать SQL запрос под SQLite
8 сообщений из 33, страница 2 из 2
Помогите переделать SQL запрос под SQLite
    #39721527
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже блокировка из-за отложенного создания временных таблиц.
Попробуй добавить сортировку, чтобы явно запись T2 произошла:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
(@" 
Create temp table T1 as 
Select Sheta.Id,Profil.artikul_profil, Profil.system, Profil.tip, Profil.opis, Profil.width_kom, Profil.width_street, Profil.length, Profil.height, Izd_karandash.kol, 
Izd_karandash.sum,Izd_karandash.id_karandash,Izd.id_plenka_street, Izd.kol AS Expr1, Izd.price_s_proc, Izd.prim, Izd.shirina, Izd.date, Izd.squre, Izd.length AS Expr2, Plenka_1.name_plenka AS Expr3, Klient.name_klient, Izd.No_izd, Sheta.N_K_S 
FROM Sheta INNER JOIN Klient ON Sheta.id_K = Klient.Id_klient 
INNER JOIN Izd_Karandash ON Sheta.Id = Izd_karandash.id_schet 
INNER JOIN Izd ON Sheta.id=Izd.id_schet 
INNER JOIN Profil ON Profil.Id_profil = Izd.id_profil 
INNER JOIN Plenka AS Plenka_1 ON Izd.id_plenka_komnata=Plenka_1.Id_plenka 
WHERE (Sheta.id IN ({0})); 

Create temp table T2 as 
Select T1.*,Karandash.opisanie_karandash,Karandash.artikul_karandash 
from T1 left join Karandash ON Karandash.Id_karandash =T1.id_karandash 
union all 
Select T1.*,Karandash.opisanie_karandash,Karandash.artikul_karandash 
from Karandash left join T1 ON Karandash.Id_karandash = T1.id_karandash 
where T1.id_karandash is NULL
order by Id_karandash; 

Select T2.*,Plenka.* 
from T2 left join Plenka on Plenka.Id_plenka = T2.id_plenka_street 
union all 
Select T2.*,Plenka.* 
from Plenka left join T2 on Plenka.Id_plenka = T2.id_plenka_street 
where T2.id_plenka_street is NULL;

drop table T1; 
drop table T2; 
", m);



Если не поможет, то надо изучать документацию. Я со временными таблицами тоже не особо работал.
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721811
Dima T, нет, все равно ошибка(
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721814
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угадать похоже не получится. Давай структуру таблиц. Запусти
Код: sql
1.
sqlite3.exe my.db


где my.db это твоя БД.

Запустится sqlite3, там выполни:
Код: sql
1.
2.
3.
sqlite> .output schema.sql
sqlite> .schema
sqlite> .exit


Файл schema.sql выложи сюда.
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721829
Dima T,
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39722146
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал пустую БД, повторить проблему не получилось, это работает 21712480 .

По ошибке "A table in the database is locked" нашел похожий случай

Попробуй убрать из запроса
Код: sql
1.
2.
drop table T1; 
drop table T2;

и сделать drop после того как прочитаешь результат запроса.
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39722173
Dima T,
попробовал в sqlite DB Browser, все работает, а в Visual Studio нет
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39722473
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АртурVan_KenobiDima T,
попробовал в sqlite DB Browser, все работает, а в Visual Studio нет
drop`ы убрал? без них не работает?

В Visual Studio как запускаешь запрос?
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39722594
Dima T, Без drop выходит ошибка (System.Data.ConstraintException: "Не удалось включить ограничения. По меньшей мере одна строка содержит значение, нарушающее ограничения по отсутствию пустых значений, уникальности или внешним ключам.")
///
В sqlite browser попробовал, результат не тот выходит. у меня есть Счет в счет входят Изделия и Аксессуары, мне надо что бы на печать выходило содержимое счета в не зависимости есть ли там Акессуары или Изделия или нет, а получается если в счете нет аксессуаров или изделий нет, то в отчет ничего не выходит, а выходит только тогда когда в счете есть и изделия и акссесуары
///
в VS в Dataset пишу так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
        public virtual int Fill(DataSet1.DataTable1DataTable dataTable, object m)
        {
            this._commandCollection = new global::Devart.Data.SQLite.SQLiteCommand[1];
            this._commandCollection[0] = new global::Devart.Data.SQLite.SQLiteCommand();
            this._commandCollection[0].Connection = this.Connection;
            this._commandCollection[0].CommandText = string.Format(@"
Create temp table T1 as
    Select Sheta.Id,Profil.artikul_profil, Profil.system, Profil.tip, Profil.opis, Profil.width_kom, Profil.width_street, Profil.length, Profil.height, Izd_karandash.kol, 
        Izd_karandash.sum,Izd_karandash.id_karandash,Izd.id_plenka_street, Izd.kol AS Expr1, Izd.price_s_proc, Izd.prim, Izd.shirina, Izd.date, Izd.squre, Izd.length AS Expr2, Plenka_1.name_plenka AS Expr3, Klient.name_klient, Izd.No_izd, Sheta.N_K_S
    FROM Sheta INNER JOIN Klient ON Sheta.id_K = Klient.Id_klient
               INNER JOIN Izd_Karandash ON Sheta.Id = Izd_karandash.id_schet
               INNER JOIN Izd ON Sheta.id=Izd.id_schet
               INNER JOIN Profil ON Profil.Id_profil = Izd.id_profil
               INNER JOIN Plenka AS Plenka_1 ON Izd.id_plenka_komnata=Plenka_1.Id_plenka
WHERE        (Sheta.id IN ({0}));

Create temp table T2 as
    Select T1.*,Karandash.opisanie_karandash,Karandash.artikul_karandash
        from T1 left join Karandash ON Karandash.Id_karandash =T1.id_karandash
union all
    Select T1.*,Karandash.opisanie_karandash,Karandash.artikul_karandash
        from Karandash left join T1 ON Karandash.Id_karandash = T1.id_karandash
where T1.id_karandash is NULL
order by Id_karandash; 

    Select T2.*,Plenka.* 
        from T2 left join Plenka on Plenka.Id_plenka = T2.id_plenka_street 
union all 
    Select T2.*,Plenka.* 
        from Plenka left join T2 on Plenka.Id_plenka = T2.id_plenka_street 
where T2.id_plenka_street is NULL;


", m);

            this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
            this.Adapter.SelectCommand = this.CommandCollection[0];

            if ((this.ClearBeforeFill == true))
            {
                dataTable.Clear();
            }
            int returnValue = this.Adapter.Fill(dataTable);
            return returnValue;
        }
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Помогите переделать SQL запрос под SQLite
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]