powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Помогите переделать SQL запрос под SQLite
25 сообщений из 33, страница 1 из 2
Помогите переделать SQL запрос под SQLite
    #39720730
у меня есть SQL с Full, но в SQLite есть только Left, помогите переделать запрос
/////
(@"
SELECT Sheta.Id, Karandash.opisanie_karandash, Karandash.artikul_karandash, 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.kol AS Expr1, Izd.price_s_proc, Izd.prim, Izd.shirina, Izd.date, Izd.squre, Izd.length AS Expr2, Plenka.name_plenka, 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 FULL OUTER JOIN
Karandash INNER JOIN
Izd_karandash ON Karandash.Id_karandash = Izd_karandash.id_karandash ON Sheta.Id = Izd_karandash.id_schet FULL OUTER JOIN
Plenka INNER JOIN
Profil INNER JOIN
Izd ON Profil.Id_profil = Izd.id_profil INNER JOIN
Plenka AS Plenka_1 ON Izd.id_plenka_komnata = Plenka_1.Id_plenka ON Plenka.Id_plenka = Izd.id_plenka_street ON Sheta.Id = Izd.id_schet
WHERE (Sheta.id IN ({0}))", m);
/////
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39720734
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай как в документации предлагают SQLite FULL OUTER JOIN Emulation
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39720748
Dima T,
один Full могу заменить, но в таком запросе уже путаюсь, был бы очень благодарен, если бы мой запрос переделали под sqlite или может пример с несколькими Union у Вас есть
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39720765
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала надо запрос "причесать", т.к. в исходном виде мозг взрывается при попытке понять что там написано.
Навел красоту, проверь что этот запрос так же работает как исходный:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT Sheta.Id, Karandash.opisanie_karandash, Karandash.artikul_karandash, 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.kol AS Expr1, Izd.price_s_proc, Izd.prim, Izd.shirina, Izd.date, Izd.squre, Izd.length AS Expr2
                , Plenka.name_plenka, 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
                       FULL OUTER JOIN Karandash ON Karandash.Id_karandash = Izd_karandash.id_karandash 
                   INNER JOIN Izd ON Sheta.Id = Izd.id_schet
                       INNER JOIN Profil ON Profil.Id_profil = Izd.id_profil 
                       FULL OUTER JOIN Plenka ON Plenka.Id_plenka = Izd.id_plenka_street
                       INNER JOIN Plenka AS Plenka_1 ON Izd.id_plenka_komnata = Plenka_1.Id_plenka 
        WHERE (Sheta.id IN ({0}))


Если все нормально, то будем дальше думать как FULL JOIN заменить
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39720780
Dima T, пока проверить не могу, но думаю да все правильно
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721118
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АртурVan_KenobiDima T, пока проверить не могу, но думаю да все правильно
Никогда не пишите фулл джойн. Не надо. За тридцать лет программирования на SQL никогда не писал.
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721135
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АртурVan_KenobiDima T, пока проверить не могу, но думаю да все правильно
ИМХО выкинуть эти две таблицы из запроса и результат во временную таблицу. Затем ее FULL JOIN с первой таблицей во вторую временную, затем вторую FULL JOIN со второй. Под FULL JOIN подразумевал это 21710723
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721136
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeАртурVan_KenobiDima T, пока проверить не могу, но думаю да все правильно
Никогда не пишите фулл джойн. Не надо. За тридцать лет программирования на SQL никогда не писал.
Верно подмечено, повод пересмотреть написанное. Я тоже никогда не писал FULL JOIN
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721209
Dima T,можете показать на примере? я с временными таблицами не имел дел
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721216
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АртурVan_KenobiDima T,можете показать на примере? я с временными таблицами не имел дел
Для создания временной таблицы create temp table ...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create temp table T1 as
   SELECT Sheta.Id, Karandash.opisanie_karandash, Karandash.artikul_karandash, 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.kol AS Expr1, Izd.price_s_proc, Izd.prim, Izd.shirina, Izd.date, Izd.squre, Izd.length AS Expr2
                , Plenka.name_plenka, 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
                       FULL OUTER JOIN Karandash ON Karandash.Id_karandash = Izd_karandash.id_karandash 
                   INNER JOIN Izd ON Sheta.Id = Izd.id_schet
                       INNER JOIN Profil ON Profil.Id_profil = Izd.id_profil 
                       FULL OUTER JOIN Plenka ON Plenka.Id_plenka = Izd.id_plenka_street
                       INNER JOIN Plenka AS Plenka_1 ON Izd.id_plenka_komnata = Plenka_1.Id_plenka 
        WHERE (Sheta.id IN ({0}))


Будет создана таблица T1 доступная только тому кто ее создал. Выделенное красным убери из запроса.
Затем
Код: sql
1.
2.
3.
4.
5.
6.
7.
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


затем также T2 и Plenka

В конце удали временные
Код: sql
1.
2.
drop table T1;
drop table T2;
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721236
Dima T,
Хорошо, спасибо большое, сейчас попробую
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721392
Dima T,я правильно написал? VS написало что у меня возле ON синтаксическая ошибка
Код: 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.kol AS Expr1, Izd.price_s_proc, Izd.prim, Izd.shirina, Izd.date, Izd.squre, Izd.length AS Expr2, Plenka.name_plenka, 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_plenka = Izd.id_profil 
INNER JOIN Plenka AS Plenka_1 ON Izd.id_plenka_komnata = Plenka_1.Id_plenka ON Plenka.Id_plenka = Izd.id_plenka_street ON Sheta.Id = Izd.id_schet 
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 

Create temp table T3 as 
Select T1.*,Plenka.* 
from T1 left join Plenka on Plenka.Id_plenka = T1.id_plenka_street 
union all 
Select T1.*,Plenka.* 
from Plenka left join T1 on Plenka.Id_plenka = T1.id_plenka_street 
where T1.id_plenka_street is NULL 

drop table T1;
drop table T2;
drop table T3;
", m);
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721440
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. После каждого запроса надо ;
2. "Create temp table T3 as" не надо. Это результат, там просто SELECT ...
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721442
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. "drop table T3;" тоже не надо
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721452
Dima T, Все равно ошибка "Sqlite error near "ON":syntax error"
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721454
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты какой запрос взял? В причесаном 21710774 этого не было
Код: sql
1.
ON Plenka.Id_plenka = Izd.id_plenka_street ON Sheta.Id = Izd.id_schet
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721472
Dima T,запускается без ошибок, но в отчет ничего не выходит, в параметр m значение поступают
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721476
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это убрал?
Код: sql
1.
2.
3.
4.
...
Create temp table T3 as 
...
drop table T3;
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721480
Dima T,
да, убрал
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721482
Dima T, сейчас вот такой запрос у меня
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
(@" 
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; 


drop table T1; 
drop table T2; 
", m);
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721486
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо было только 2 строки убрать. И в запросе использовать 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.
(@" 
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; 

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
    #39721488
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ; добавь
Код: sql
1.
2.
...
where T2.id_plenka_street is NULL ;
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721493
Dima T, изначально так и сделал, но вышла ошибкеа "A table in the database is locked"
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721512
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно. Попробуй так
Код: 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.
31.
32.
33.
(@" 
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; 

Create temp table T3 as 
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;

select * from T3;

drop table T1; 
drop table T2; 
drop table T3; 
", m);
...
Рейтинг: 0 / 0
Помогите переделать SQL запрос под SQLite
    #39721520
Dima T, Все равно та же ошибка
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Помогите переделать SQL запрос под SQLite
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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