Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kesatuan PHP bertanya tiga jadual

Kesatuan PHP bertanya tiga jadual

王林
王林asal
2023-05-07 09:15:06783semak imbas

Apabila membangunkan tapak web, kadangkala anda perlu menggabungkan berbilang jadual untuk membuat pertanyaan dan mendapatkan data yang diperlukan. Dalam PHP, anda boleh menggunakan pernyataan pertanyaan kesatuan untuk mencapai fungsi ini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk bersama-sama menanyakan tiga jadual.

Andaikan kita mempunyai tiga jadual: pengguna, pesanan dan item_pesanan. Antaranya, jadual pengguna merekodkan maklumat pengguna, jadual pesanan merekodkan maklumat pesanan, dan jadual item_pesanan merekodkan maklumat item pesanan. Sekarang kita perlu menanyakan semua pesanan untuk setiap pengguna dan semua item baris untuk setiap pesanan. Ini boleh dicapai menggunakan pernyataan pertanyaan bersama berikut:

$sql = "SELECT u.name, o.order_number, i.product_name, i.price
    FROM users u
    JOIN orders o ON u.id = o.user_id
    JOIN order_items i ON o.id = i.order_id
    WHERE u.id = ?";

Pernyataan ini mula-mula menghubungkan jadual pengguna, jadual pesanan dan jadual item_pesanan melalui kata kunci JOIN, dan kemudian menapis keluar maklumat pengguna yang ditentukan melalui klausa WHERE . Antaranya, kata kunci JOIN digunakan untuk menyertai jadual, dan kata kunci ON digunakan untuk menentukan syarat sambungan.

Dalam pertanyaan di atas, kami perlu menanyakan semua pesanan setiap pengguna dan semua item baris setiap pesanan. Oleh itu, kita perlu menggunakan kata kunci JOIN untuk menyambungkan jadual pengguna, jadual pesanan dan jadual item_pesanan. Terdapat tiga kaedah sambungan:

  • INNER JOIN (inner join): Hanya baris yang sepadan daripada dua jadual dikembalikan.
  • SERTAI KIRI (sambung kiri): Mengembalikan semua baris dari jadual kiri dan baris dari jadual kanan yang memenuhi syarat cantum. Jika tiada baris yang sepadan dalam jadual yang betul, NULL dikembalikan.
  • SERTAI KANAN (cantuman kanan): Mengembalikan semua baris jadual kanan dan baris jadual kiri yang memenuhi syarat cantum. Jika tiada baris yang sepadan dalam jadual kiri, NULL dikembalikan.

Dalam contoh ini, kami menggunakan INNER JOIN kerana kami hanya mahu mengembalikan baris yang mempunyai padanan.

Seterusnya, kita perlu menentukan syarat sambungan. Di sini kami menggunakan ID pengguna (users.id) untuk mengaitkan dengan ID pengguna pesanan (orders.user_id) dan ID pesanan (orders.id) untuk mengaitkan ID pesanan item pesanan (order_items.order_id).

Akhir sekali, kami menggunakan klausa WHERE untuk menapis maklumat pengguna yang ditentukan. Di sini, kami menggunakan ruang letak? Sebelum melaksanakan pertanyaan, anda perlu menggunakan kaedah bindParam() atau bindValue() untuk mengikat parameter sebenar kepada pemegang tempat.

Untuk meringkaskan, ini adalah pernyataan PHP yang agak mudah untuk bersama-sama menanyakan tiga jadual. Pertanyaan kesatuan ialah kaedah pertanyaan yang sangat fleksibel dan berkuasa, yang harus digunakan secara fleksibel mengikut keperluan sebenar dalam pembangunan sebenar.

Atas ialah kandungan terperinci Kesatuan PHP bertanya tiga jadual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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