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.