Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL hubungan satu ke banyak:GROUP_CONCAT atau JOIN atau keduanya?

Menebak dari query Anda juga ada order_id di order_products . Anda tabel yang tidak Anda sebutkan dalam definisi tabel. Kueri Anda akan terlihat seperti:

SELECT c.name AS category_name,
             SUM( s.subtotal ) AS amt,
             GROUP_CONCAT( CONCAT(s.name, ' - ', s.subtotal ) SEPARATOR ', ' ) AS subtotals
FROM 
    product_category c 
JOIN 
  ( SELECT op.category, op.name, sum(op.qty*op.unit_price) AS subtotal
    FROM order_products op
    JOIN orders o ON o.id = op.order_id
    WHERE o.date > '2012-03-31'
    GROUP BY op.category, op.name ) s 
  ON s.category = c.id
GROUP BY c.name

Skema db Anda cukup aneh, tabel pesanan sepertinya bisa dihapus dan tanggal itu dipindahkan ke order_products, karena untuk setiap baris order_products Anda memiliki referensi ke tabel pesanan. Biasanya sebaliknya - ada banyak pesanan untuk setiap produk yang dirujuk oleh kolom product_id di tabel pesanan. Juga kolom tanggal dalam pesanan bertipe varchar - mengapa tidak tanggal atau datetime?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengambil hasil dari baris MySQL dengan beberapa kolom dengan nama yang sama dengan PHP?

  2. Apakah beberapa kunci asing masuk akal?

  3. Jquery datepicker dengan Ajax tidak berfungsi

  4. mysql (hampir) menyelesaikan audit

  5. Bagaimana saya menggunakan ON DUPLICATE KEY UPDATE dalam model CodeIgniter saya?