Mysql
 sql >> база данни >  >> RDS >> Mysql

Комплекс MySQL JOIN с GROUP BY

Мисля, че не можете да направите всичко наведнъж, както се опитвате, защото искате да групирате/сумирате елементи от различни таблици едновременно. Опитайте това:

 select unit, name, stays, days, total_price, charges, mgmt_fee,
   (total_price*.01*mgmt_fee) AS management,
   (total_price-(total_price*.01*mgmt_fee)-charges)  AS bal
 from (
 select 
   x.unit, 
   name, 
   count(*) as stays, 
   sum(days) as days, 
   sum(total_price) as total_price, 
   charges,
   mgmt_fee
 from
 (select 
   unit , 
   datediff(depart,arrival) as days,  
   total_price
 from
   Reservations
  ) as x
 join (
   select unit, sum(amount) as charges
   from Charges
   group by unit
   ) as y
 on x.unit = y.unit
 join Unit  as u
 on u.id = x.unit
 group by unit
 ) as inner_result

Не е много подредено или елегантно, но мисля, че работи. Имайте предвид, че ще трябва да внимавате, ако може да има> 1 ред в такси за единица. Ето цигулка, за да я покажете как работи:http://sqlfiddle.com/#!2/f05ba/18




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Хибернация Картографиране на релациите/Ускоряване на партидни вмъквания

  2. Как да се справя с връзките при класиране на резултатите в MySQL?

  3. Неправилна стойност на низа:'\xE2\x80\xAF(fo...' за колона 'описание' на ред 1 Грешка:INSERT INTO my_table_name

  4. Symfony2 доктрината се свързва с база данни чрез SSL

  5. Мога ли да използвам едно и също ограничение за външен ключ в две различни таблици?