У меня есть две таблицы, у которых нет отношений, и я делаю левое и правое соединение, чтобы имитировать полное соединение на них и выбрать некоторые данные.
способ отображения данных прав, но значения неправильные, его вид, как они выбраны более одного раза.
мои таблицы что-то вроде этого:
ТАБЛИЦА 1 (сделки)
trade_date ---- прибыльemulated of full join return wrong values
ТАБЛИЦА 2 (general_cost)
дата ----- стоимость
это запрос что я написать:
select b.trade_date, coalesce(sum(b.profit),0), coalesce(sum(g.cost),0)
from bargains as b
left join general_cost as g on b.trade_date = g.date group by b.trade_date
union
select g.date, coalesce(sum(b.profit),0), coalesce(sum(g.cost),0) from
bargains as b
right join general_cost as g on b.trade_date = g.date group by g.date
это результат запроса:
, например, в дате 1395-9-28 сумма столбца прибыли должна быть 440 и сумма колонки стоимости должна быть равна 800
, если это поможет вам следует знать, что есть три строки с этой датой в таблице сделок и две строки в таблице general_cost
я использую где положение, но количество возвращаемых строк по запросу 9 я имею в виду его получить меньше, но все же я получаю тот же результат для этой даты, это значит, еще есть матч на обоих столах. Думаете, проблема в том, что я использую группу? – AliDK
Ах, если бы «где» в неправильном месте, нужно опередить группу. Ответ обновлен. – Shadow
Я знаю, что я делаю это правильно, я изменяю предложение where, но все же результат - это то, что я сказал. могу ли я отправить вам результат запроса, когда я удалю сумму из запроса, потому что, как вы сказали, это должно исключать нулевое значение, но нет нулевого значения, например, есть три копии одного и того же значения в столбце затрат для каждой даты в что я должен делать сейчас – AliDK