|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
Недавно столкнулся с Postgre. Переделал запрос, но все равно почему-то не работает. Подскажите пожалуйста где может быть проблема и как ее решить. Код на JS идет прямое обращение к sql. Переделал: var local_sql = ""; local_sql += "WITH dbo.Rec AS (" + "\r\n"; local_sql += " SELECT DISTINCT" + "\r\n"; local_sql += " c.id" + "\r\n"; local_sql += " ,c.fullname" + "\r\n"; local_sql += " ,0 AS level" + "\r\n"; local_sql += " FROM" + "\r\n"; local_sql += " dbo.func_managers AS fm" + "\r\n"; local_sql += " INNER JOIN dbo.collaborators AS c ON fm.object_id = c.id AND fm.is_native = 1" + "\r\n"; local_sql += " WHERE" + "\r\n"; local_sql += " fm.person_id = " + curUserID + "\r\n"; local_sql += " AND fm.catalog = 'collaborator'" + "\r\n"; local_sql += " AND 1 = (" + "\r\n"; local_sql += " SELECT " + "\r\n"; local_sql += " limit 1" + " \r\n"; local_sql += " COUNT(fm.id)" + "\r\n"; local_sql += " FROM" + "\r\n"; local_sql += " dbo.func_managers AS fm" + "\r\n"; local_sql += " INNER JOIN dbo.boss_types AS bt ON bt.code = 'director_dc' AND fm.boss_type_id = bt.id" + "\r\n"; local_sql += " WHERE" + "\r\n"; local_sql += " fm.person_id = " + curUserID + "\r\n"; local_sql += " AND fm.catalog = 'subdivision'" + "\r\n"; local_sql += " )" + "\r\n"; local_sql += " UNION ALL" + "\r\n"; local_sql += " SELECT " + "\r\n"; local_sql += " c.id" + "\r\n"; local_sql += " ,c.fullname" + "\r\n"; local_sql += " ,t.level + 1" + "\r\n"; local_sql += " FROM" + "\r\n"; local_sql += " dbo.func_managers AS fm_1" + "\r\n"; local_sql += " INNER JOIN dbo.collaborators AS c ON fm_1.object_id = c.id AND fm_1.is_native = 1" + "\r\n"; local_sql += " INNER JOIN (" + "\r\n"; local_sql += " SELECT * FROM dbo.Rec" + "\r\n"; local_sql += " ) AS t ON fm_1.person_id = t.id AND fm_1.is_native = 1" + "\r\n"; local_sql += " WHERE" + "\r\n"; local_sql += " fm_1.catalog = 'collaborator'" + "\r\n"; local_sql += ")" + "\r\n"; local_sql += "SELECT " + "\r\n"; local_sql += "limit 1" + " \r\n"; local_sql += " c.id " + "\r\n"; local_sql += "FROM " + "\r\n"; local_sql += " dbo.collaborators AS c " + "\r\n"; local_sql += " INNER JOIN dbo.positions AS p ON p.id = c.position_id " + "\r\n"; local_sql += " INNER JOIN dbo.subdivision] AS s ON s.id = p.parent_object_id " + "\r\n"; local_sql += " INNER JOIN dbo.Rec ON c.id = Rec.id " + "\r\n"; local_sql += "WHERE " + "\r\n"; local_sql += " c.id = " + owner_id + "\r\n"; local_sql += " AND dbo.Rec.level < 2" + "\r\n"; ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 17:09 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
legis, и как. вы считаете нормальным вывалить простыню конкатенации с формулировкой "я что-то поменял, найдите ошибку"? При том ошибку так же надо угадать. Оформите вопрос нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 17:44 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
legis Недавно столкнулся с Postgre. Переделал запрос, но все равно почему-то не работает. Подскажите пожалуйста где может быть проблема и как ее решить. Код на JS идет прямое обращение к sql. Переделал: var local_sql = ""; local_sql += "WITH dbo.Rec AS (" + "\r\n"; local_sql += " SELECT DISTINCT" + "\r\n"; local_sql += " c.id" + "\r\n"; local_sql += " ,c.fullname" + "\r\n"; local_sql += " ,0 AS level" + "\r\n"; local_sql += " FROM" + "\r\n"; local_sql += " dbo.func_managers AS fm" + "\r\n"; local_sql += " INNER JOIN dbo.collaborators AS c ON fm.object_id = c.id AND fm.is_native = 1" + "\r\n"; local_sql += " WHERE" + "\r\n"; local_sql += " fm.person_id = " + curUserID + "\r\n"; local_sql += " AND fm.catalog = 'collaborator'" + "\r\n"; local_sql += " AND 1 = (" + "\r\n"; local_sql += " SELECT " + "\r\n"; local_sql += " limit 1" + " \r\n"; local_sql += " COUNT(fm.id)" + "\r\n"; local_sql += " FROM" + "\r\n"; local_sql += " dbo.func_managers AS fm" + "\r\n"; local_sql += " INNER JOIN dbo.boss_types AS bt ON bt.code = 'director_dc' AND fm.boss_type_id = bt.id" + "\r\n"; local_sql += " WHERE" + "\r\n"; local_sql += " fm.person_id = " + curUserID + "\r\n"; local_sql += " AND fm.catalog = 'subdivision'" + "\r\n"; local_sql += " )" + "\r\n"; local_sql += " UNION ALL" + "\r\n"; local_sql += " SELECT " + "\r\n"; local_sql += " c.id" + "\r\n"; local_sql += " ,c.fullname" + "\r\n"; local_sql += " ,t.level + 1" + "\r\n"; local_sql += " FROM" + "\r\n"; local_sql += " dbo.func_managers AS fm_1" + "\r\n"; local_sql += " INNER JOIN dbo.collaborators AS c ON fm_1.object_id = c.id AND fm_1.is_native = 1" + "\r\n"; local_sql += " INNER JOIN (" + "\r\n"; local_sql += " SELECT * FROM dbo.Rec" + "\r\n"; local_sql += " ) AS t ON fm_1.person_id = t.id AND fm_1.is_native = 1" + "\r\n"; local_sql += " WHERE" + "\r\n"; local_sql += " fm_1.catalog = 'collaborator'" + "\r\n"; local_sql += ")" + "\r\n"; local_sql += "SELECT " + "\r\n"; local_sql += "limit 1" + " \r\n"; local_sql += " c.id " + "\r\n"; local_sql += "FROM " + "\r\n"; local_sql += " dbo.collaborators AS c " + "\r\n"; local_sql += " INNER JOIN dbo.positions AS p ON p.id = c.position_id " + "\r\n"; local_sql += " INNER JOIN dbo.subdivision] AS s ON s.id = p.parent_object_id " + "\r\n"; local_sql += " INNER JOIN dbo.Rec ON c.id = Rec.id " + "\r\n"; local_sql += "WHERE " + "\r\n"; local_sql += " c.id = " + owner_id + "\r\n"; local_sql += " AND dbo.Rec.level < 2" + "\r\n"; должно работать ошибок же нет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:14 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
legis, не понятно, что вы переделали, но такой синтаксис не будет работать в постресе : Код: sql 1. 2.
врядли dbo это существующая схема Код: sql 1. 2. 3. 4. 5.
такое то-же не прокатит Код: sql 1. 2.
и это то-же не к постгресу ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:20 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
kira ivanov, по-человечески это выглядит так: Код: 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
Помимо замечаний от kira ivanov, тут еще и опечатка есть - закрывающая квадратная скобка в строке INNER JOIN dbo.subdivision] AS s ON s.id = p.parent_object_id сомневаюсь, что это работало в МСSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 18:07 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
DSKalugin, и не лень вам было :) Код: sql 1.
это не не сюда Код: sql 1.
это то-же не в тему схема dbo то есть или нет ? остальное смотреть смысла нет если что-то и было переделано, то как максимум параметры подключения, ну и про скобку вы верно заметили ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 20:31 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
DSKalugin Помимо замечаний от kira ivanov, тут еще и опечатка есть - закрывающая квадратная скобка в строке INNER JOIN dbo.subdivision] AS s ON s.id = p.parent_object_id сомневаюсь, что это работало в МСSQL вероятно "переделывание запроса" состояло в удалении скобок в именах полей (TSQL)... а здесь "случайно осталась" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 20:41 |
|
Перенос запроса с Microsoft SQL на PostgreSql
|
|||
---|---|---|---|
#18+
kira ivanovврядли dbo это существующая схема dbo в MS SQL это то же, что public в PostgreSQL. Автору вопроса сначала надо узнать, есть ли уже в PostgreSQL таблицы с данными, импортированными из MS SQL. Без них рано думать над SELECT. Если таблиц нет, то создать и импортировать данные, для чего есть разнообразные средства. При создании таблиц выбирать соответствие между типами данных в MS SQL и PostgreSQL. В крадце - для простоты в PostgreSql всем строковым полям можно (но необязательно) задавать тип TEXT без указания длины, целым значениям - INTEGER, действительным значениям - DOUBLE PRECISION, дате-времени - TIMESTAMP WITH TIME ZONE, Image в MS SQL заменить на BLOB. Приведённый синтаксис SELECT не будет работать в PostgreSQL, но с ним надо разбираться после создания и заполнения таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 22:08 |
|
|
start [/forum/topic.php?fid=53&msg=39894187&tid=1994918]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 150ms |
0 / 0 |