172 похожих чатов

Как сделать так чтобы join был по определенному ключу если

подвыражение возвратит 1 ?
У меня несколько подвыражений, которые должны соединяться каждый по другому с main table

9 ответов

14 просмотров

Лучше так не делать, по-хорошему (т.е. это почти наверняка неудачная схема БД). А так — покажите пример таблиц или как-то подробнее объясните, что именно нужно.

Shoxrux- Автор вопроса
Yaroslav Schekin
Лучше так не делать, по-хорошему (т.е. это почти н...

У меня есть мэйн таблица у которой есть поле account_id. И мне нужно по account_id найти суммы кред или дебет по этому пользователю, а суммы хранятся в другой таблице. В другой таблице есть две колонки, которые отвечают за кредит, а другой за дебет. То есть если у клиента debet то нужно соединить с мэйн по cl_deb = account_id. если кредит, то по cl_cred = account_id (cl_deb и cl_cred - две колонки из второй таблицы)

Shoxrux
У меня есть мэйн таблица у которой есть поле accou...

> И мне нужно по account_id найти суммы кред или дебет В зависимости от чего "кред или дебет"? > То есть если у клиента debet И это что значит?

Shoxrux
У меня есть мэйн таблица у которой есть поле accou...

Сделайте 2 джойна, а кредит/дебет выведите через coalesce

Shoxrux- Автор вопроса
Yaroslav Schekin
> И мне нужно по account_id найти суммы кред или д...

* В зависимости от чего "кред или дебет"? Устанавливаю сам. Есть условия при которых я могу сказать, что здесь я должен соединять по debet или по kred. Мне нужно, как-то сказать, что этот подзапрос содержит кредит счет и должен соединяться с мэйн по cl_kred

Shoxrux
* В зависимости от чего "кред или дебет"? Устанав...

Это плохая практика, Ярослав и написал, что со схемой скорее всего проблемы. Когда в джойнах появляются условия — это тревожный звонок. Условия должны быть в where

Shoxrux
* В зависимости от чего "кред или дебет"? Устанав...

Лучше б Вы пример схемы / запроса показали, мне до сих пор так и не понятно... а так — условия в LEFT JOIN или JOIN с "(SELECT ... FROM a UNION ALL SELECT FROM b) AS ab ON ... ", например. Но, вообще, подобные схемы ведут к проблемам, в т.ч. с написанием запросов. К примеру, запрос https://t.me/pgsql/288791 — скорее всего, неправильный. ;)

Shoxrux- Автор вопроса

select a.name, (select sum_val from table_1 d1 where d1.dat_doc between '01.10.2020' and '30.10.2020' and (d1.ls_cl like '10501%' or d1.ls_cl like '10101%') and (d1.naz_pla like '45020%' or d1.naz_pla like '45021%' or d1.naz_pla like '45022%' or d1.naz_pla like '45023%' or d1.naz_pla like '45024%') and d1.ls_cl = a.account) sub1, --debet (select sum_val from table_1 where d1.dat_doc between '01.10.2020' and '30.10.2020' and (d1.ls_cor like '20201%' or d1.ls_cor like '20204%') and (d1.naz_pla like '45020%' or d1.naz_pla like '45021%' or d1.naz_pla like '45022%' or d1.naz_pla like '45023%' or d1.naz_pla like '45024%' and d1.ls_cor = a.account)) sub2 --kredit from acc a -- main table Мне нужно чтобы он взял инфу с мэйна. Если кредит то по кредиту, если дебет по дебету.

Shoxrux
select a.name, (select sum_val ...

Можно либо посылать разные запросы (если это весь запрос, и "нужен кредит или дебет" зависит от внешних условий), либо внести это условие в JOIN, с помощью либо CASE, либо UNION ALL (как я писал выше). Но в последнем случае могут быть проблемы с производительностью — PostgreSQL вообще "не любит" кривых схем и запросов, учтите.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта