как использовать функцию суммы с объединением в MySQL - PullRequest
0 голосов
/ 23 февраля 2019
select sum(bales) as bales 
  from receive_bardana  
  join receive_wheat
    on receive_bardana.id = receive_wheat.id 
 where id=1

мой результат показывает неправильный вывод

1 Ответ

0 голосов
/ 23 февраля 2019

Ваш запрос 1) не должен даже синтаксис с указанным идентификатором неоднозначно в предложении where 2) объединенная таблица не имеет смысла, так как вы ничего не используете из нее в select 3) Из небольшой информации, которую вы предоставили в вопросесуществует отношение 1 ко многим между receive_bardana и receive_wheat, что означает, что сумма по всем объединенным строкам, например,

create table receive_bardana(id int,bales int);  
create table receive_wheat(id int);

insert into receive_bardana values (1,10),(2,20);  
insert into receive_wheat values(1),(1),(2),(2),(2);

select *
  from receive_bardana  
  join receive_wheat
    on receive_bardana.id = receive_wheat.id 
 where receive_bardana.id;

Результат

+------+-------+------+
| id   | bales | id   |
+------+-------+------+
|    1 |    10 |    1 |
|    1 |    10 |    1 |
|    2 |    20 |    2 |
|    2 |    20 |    2 |
|    2 |    20 |    2 |
+------+-------+------+
5 rows in set (0.00 sec)

и с вашим (фиксированным) запросом

select sum(bales) as bales 
  from receive_bardana  
  join receive_wheat
    on receive_bardana.id = receive_wheat.id 
 where receive_bardana.id;

сумма возвращается правильно

+-------+
| bales |
+-------+
|    80 |
+-------+
1 row in set (0.00 sec)

Это полностью объясняет «проблему», с которой вы столкнулись.Если вы хотите получить ответ на то, что вы пытаетесь сделать, я предлагаю вам задать новый вопрос, описывающий то, что вы пытаетесь сделать, вместо того, чтобы просто сказать, что этот кусок кода не работает, как я ожидаю (на самом деле он делает то, что я ожидаю ине «неправильно»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...