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

MySQL Butuh bantuan untuk membuat kueri:gabungkan beberapa tabel menjadi satu baris

Saya pikir Anda terlalu menyederhanakannya di suatu tempat. Kueri yang Anda kutip akan mengembalikan persis seperti yang Anda inginkan. Berikut ini sebuah contoh (memilih dari satu tabel dua kali memberikan situasi yang sama seperti yang Anda miliki)

mysql> select * from test t1 join test t2 on t1.a = t2.a LIMIT 1,5;
+------+------+------+------+
| a    | b    | a    | b    |
+------+------+------+------+
|    1 |    2 |    1 |    1 | 
|    1 |    1 |    1 |    2 | 
|    1 |    2 |    1 |    2 | 
|    2 |    2 |    2 |    2 | 
|    2 |    2 |    2 |    2 | 
+------+------+------+------+
5 rows in set (0.00 sec)

Mysql tidak memiliki masalah untuk memberi label pada kolom kumpulan hasil dengan label yang sama. Saya kira kueri asli Anda telah memilih t1.* di bagian pilih.

Jika Anda ingin merujuk ke masing-masing bidang yang namanya ambigu, Anda akan mendapatkan

mysql> select a from test t1 join test t2 on t1.a = t2.a LIMIT 1,5;
ERROR 1052 (23000): Column 'a' in field list is ambiguous

Dan Anda harus menentukan dengan tepat apa yang Anda inginkan (alias kolom bersifat opsional, Anda dapat melakukannya t1., t2. juga)

mysql> select t1.a first, t2.a second from test t1 join test t2 on t1.a = t2.a LIMIT 1,5;
+-------+--------+
| first | second |
+-------+--------+
|     1 |      1 | 
|     1 |      1 | 
|     1 |      1 | 
|     2 |      2 | 
|     2 |      2 | 
+-------+--------+
5 rows in set (0.00 sec)

Sunting 22MARSetelah perubahan pada data sampel, tampaknya Anda ingin mengubah beberapa baris dari satu tabel menjadi satu. Berikut adalah solusi khusus (dengan asumsi bahwa Anda akan selalu memiliki baris Pajak, Total, dan Subtotal dan Anda hanya tertarik pada ini baris).

SELECT t1.id, t1.name, t2.product_id, t2.price, t3a.number subtotal, t3b.number total, t3c.number tax
FROM `table_one` AS t1 
INNER JOIN `table_two` AS t2 ON t1.id = t2.id 
INNER JOIN `table_three` AS t3a ON t1.id = t3a.id and t3a.text = "Subtotal"
INNER JOIN `table_three` AS t3b on t3a.id = t3b.id and t3b.text = "Total"
INNER JOIN `table_three` AS t3c on t3b.id = t3c.id and t3c.text = "Tax"

(jika mau, Anda juga dapat memilih konstanta "Pajak", "Total" dan "Subtotal" di bagian pilih dan beri mereka beberapa nama kolom)

Satu hal yang masih belum jelas adalah hubungan antara id dalam tabel - apakah itu kunci utama table_one atau table_two. Itu dapat mempengaruhi hasil, tentu saja, ketika Anda akan memiliki beberapa baris di table_one dan table_two.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menangani Latensi dalam Transaksi MySQL

  2. Bagaimana saya bisa mengisi baris bernomor tabel HTML berdasarkan apakah mereka cocok dengan nomor baris?

  3. cara menyimpan hubungan pernikahan di database

  4. Mysql hanya mengembalikan satu baris saat menggunakan Hitung

  5. Menyimpan Tag di Database. Simpan tag sekali atau berkali-kali?