Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam MySQL untuk Mendapatkan Data Berkaitan?

Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam MySQL untuk Mendapatkan Data Berkaitan?

Barbara Streisand
Lepaskan: 2024-12-19 14:37:11
asal
526 orang telah melayarinya

How to Efficiently Join Multiple Tables in MySQL to Retrieve Related Data?

Menyertai Berbilang Jadual dalam MySQL Menggunakan Inner Join

Dalam MySQL, pernyataan INNER JOIN membenarkan anda untuk menggabungkan rekod daripada berbilang jadual berdasarkan lajur biasa. Untuk melaksanakan gabungan berbilang jadual, anda boleh menggunakan sintaks berikut:

SELECT columns
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column
[...]
INNER JOIN table_n
ON table_n-1.column = table_n.column;
Salin selepas log masuk

Pertimbangkan senario berikut: anda mempunyai empat jadual:

  • pesanan: (user_id, pricing_id)
  • products_pricing: (id, product_id)
  • produk: (id, nama)
  • penyenaraian : (id, user_id, url)

Anda mahu mendapatkan semula semua produk untuk pengguna tertentu (user_id = 7) dan hiperpautan untuk setiap produk menggunakan URL yang sepadan daripada jadual penyenaraian.

Asal Pertanyaan:

SELECT *
FROM orders
INNER JOIN products_pricing
ON orders.pricing_id = products_pricing.id
INNER JOIN products
ON products_pricing.product_id = products.id
WHERE orders.user_id = '7';
Salin selepas log masuk

Pertanyaan ini akan mengembalikan semua produk untuk pengguna dengan ID 7, tetapi ia tidak akan menyertakan URL bagi setiap produk.

Pertanyaan Semakan:

Untuk menyertakan URL bagi setiap produk, anda boleh menambah satu lagi INNER JOIN pada jadual penyenaraian:

SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id  = pp.id
INNER JOIN products         AS  p ON pp.product_id = p.id
INNER JOIN listings         AS  l ON l.user_id = o.user_id
WHERE o.user_id ='7' 
  AND l.id = 233 
  AND l.url = 'test.com';
Salin selepas log masuk

Dalam pertanyaan ini, kami mempunyai:

  • INNER JOIN penyenaraian AS l HIDUP l.user_id = o.user_id: Ini menggabungkan jadual penyenaraian ke jadual pesanan berdasarkan lajur user_id.
  • WHERE o.user_id ='7': Ini menapis keputusan untuk memasukkan hanya baris di mana user_id dalam jadual pesanan adalah bersamaan dengan 7.
  • DAN l.id = 233 DAN l.url = 'test.com': Ini menambah penapis tambahan untuk memastikan bahawa hanya baris dengan ID tertentu (233) dan URL ('test.com') disertakan dalam hasilnya.

Dengan menggunakan pertanyaan yang disemak ini, anda boleh berjaya mendapatkan semula produk untuk pengguna yang ditentukan, bersama-sama dengan URL yang sepadan untuk memautkannya.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam MySQL untuk Mendapatkan Data Berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan