Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Помогите переделать SQL запрос под SQLite / 25 сообщений из 33, страница 1 из 2
22.10.2018, 09:35
    #39720730
Помогите переделать SQL запрос под SQLite
у меня есть 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
22.10.2018, 09:40
    #39720734
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Сделай как в документации предлагают SQLite FULL OUTER JOIN Emulation
...
Рейтинг: 0 / 0
22.10.2018, 09:59
    #39720748
Помогите переделать SQL запрос под SQLite
Dima T,
один Full могу заменить, но в таком запросе уже путаюсь, был бы очень благодарен, если бы мой запрос переделали под sqlite или может пример с несколькими Union у Вас есть
...
Рейтинг: 0 / 0
22.10.2018, 10:19
    #39720765
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Для начала надо запрос "причесать", т.к. в исходном виде мозг взрывается при попытке понять что там написано.
Навел красоту, проверь что этот запрос так же работает как исходный:
Код: 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
22.10.2018, 10:55
    #39720780
Помогите переделать SQL запрос под SQLite
Dima T, пока проверить не могу, но думаю да все правильно
...
Рейтинг: 0 / 0
22.10.2018, 18:53
    #39721118
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
АртурVan_KenobiDima T, пока проверить не могу, но думаю да все правильно
Никогда не пишите фулл джойн. Не надо. За тридцать лет программирования на SQL никогда не писал.
...
Рейтинг: 0 / 0
22.10.2018, 20:07
    #39721135
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
АртурVan_KenobiDima T, пока проверить не могу, но думаю да все правильно
ИМХО выкинуть эти две таблицы из запроса и результат во временную таблицу. Затем ее FULL JOIN с первой таблицей во вторую временную, затем вторую FULL JOIN со второй. Под FULL JOIN подразумевал это 21710723
...
Рейтинг: 0 / 0
22.10.2018, 20:09
    #39721136
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
ShSergeАртурVan_KenobiDima T, пока проверить не могу, но думаю да все правильно
Никогда не пишите фулл джойн. Не надо. За тридцать лет программирования на SQL никогда не писал.
Верно подмечено, повод пересмотреть написанное. Я тоже никогда не писал FULL JOIN
...
Рейтинг: 0 / 0
23.10.2018, 07:21
    #39721209
Помогите переделать SQL запрос под SQLite
Dima T,можете показать на примере? я с временными таблицами не имел дел
...
Рейтинг: 0 / 0
23.10.2018, 07:56
    #39721216
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Артур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
23.10.2018, 08:58
    #39721236
Помогите переделать SQL запрос под SQLite
Dima T,
Хорошо, спасибо большое, сейчас попробую
...
Рейтинг: 0 / 0
23.10.2018, 12:52
    #39721392
Помогите переделать SQL запрос под SQLite
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
23.10.2018, 13:51
    #39721440
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
1. После каждого запроса надо ;
2. "Create temp table T3 as" не надо. Это результат, там просто SELECT ...
...
Рейтинг: 0 / 0
23.10.2018, 13:52
    #39721442
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
3. "drop table T3;" тоже не надо
...
Рейтинг: 0 / 0
23.10.2018, 14:04
    #39721452
Помогите переделать SQL запрос под SQLite
Dima T, Все равно ошибка "Sqlite error near "ON":syntax error"
...
Рейтинг: 0 / 0
23.10.2018, 14:07
    #39721454
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Ты какой запрос взял? В причесаном 21710774 этого не было
Код: sql
1.
ON Plenka.Id_plenka = Izd.id_plenka_street ON Sheta.Id = Izd.id_schet
...
Рейтинг: 0 / 0
23.10.2018, 14:42
    #39721472
Помогите переделать SQL запрос под SQLite
Dima T,запускается без ошибок, но в отчет ничего не выходит, в параметр m значение поступают
...
Рейтинг: 0 / 0
23.10.2018, 14:44
    #39721476
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Это убрал?
Код: sql
1.
2.
3.
4.
...
Create temp table T3 as 
...
drop table T3;
...
Рейтинг: 0 / 0
23.10.2018, 14:49
    #39721480
Помогите переделать SQL запрос под SQLite
Dima T,
да, убрал
...
Рейтинг: 0 / 0
23.10.2018, 14:54
    #39721482
Помогите переделать SQL запрос под SQLite
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
23.10.2018, 15:08
    #39721486
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Надо было только 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
23.10.2018, 15:10
    #39721488
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
и ; добавь
Код: sql
1.
2.
...
where T2.id_plenka_street is NULL ;
...
Рейтинг: 0 / 0
23.10.2018, 15:14
    #39721493
Помогите переделать SQL запрос под SQLite
Dima T, изначально так и сделал, но вышла ошибкеа "A table in the database is locked"
...
Рейтинг: 0 / 0
23.10.2018, 15:38
    #39721512
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите переделать SQL запрос под SQLite
Странно. Попробуй так
Код: 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
23.10.2018, 15:50
    #39721520
Помогите переделать SQL запрос под SQLite
Dima T, Все равно та же ошибка
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Помогите переделать SQL запрос под SQLite / 25 сообщений из 33, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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