sql >> Database >  >> RDS >> Mysql

Mysql voegt twee tabellen samen, som, waar en groepeer op

U vermenigvuldigt het betalingsbedrag met het aantal verkooprecords, omdat u alle betalingsrecords samenvoegt met alle verkooprecords voordat u de bedragen optelt.

Verzamel eerst en doe dan pas mee.

Als er altijd maar één betalingsrecord per datum, tijd en naam kan zijn:

select p.name, p.time, p.name, s.sales_total, p.amount
from payments p
join
(
  select date, time, name, sum(total) as total
  from sales
  group by date, time, name
) s
 on s.date = p.date and s.time = p.time and s.name = p.name
where p.date = date '2017-04-01';

Anders:

select p.name, p.time, p.name, s.total, p.amount
(
  select date, time, name, sum(amount) as amount
  from payments
  group by date, time, name
) p
join
(
  select date, time, name, sum(total) as total
  from sales
  group by date, time, name
) s
 on s.date = p.date and s.time = p.time and s.name = p.name
where p.date = date '2017-04-01';



  1. php echo werkt niet

  2. Maak een query om het aantal onvoltooide oproepen op 2 velden te krijgen

  3. Verander een lange tabelkolom in een tabel met meerdere kolommen

  4. mysql VERVANG query met meerdere primaire sleutels