MySQL Inner Join Query Berbilang Jadual dengan Penapisan Tambahan
Anda sedang cuba untuk menyertai berbilang jadual dalam MySQL menggunakan inner join. Khususnya, anda cuba mendapatkan maklumat tentang produk, harga dan penyenaraian untuk pengguna tertentu. Walau bagaimanapun, termasuk jadual penyenaraian dalam pertanyaan anda menghasilkan data tambahan yang tidak diingini dalam output.
Mari kita menganalisis pertanyaan anda dan mengubah suainya untuk menangani isu:
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'
Pertanyaan ini mendapatkan semula semua rekod untuk user_id '7' daripada jadual pesanan, termasuk harga yang berkaitan dan maklumat produk.
Untuk memasukkan penyenaraian jadual dan hadkan keputusan kepada penyenaraian tertentu, anda perlu menambah syarat tambahan:
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 -- Add condition to filter by specific listing AND l.url = 'test.com' -- Add condition to filter by specific url
Pertanyaan yang diubah suai ini menambah dua syarat pada klausa WHERE:
Pertanyaan yang dikemas kini ini seharusnya memberikan anda output yang diingini: jadual yang mengandungi maklumat tentang produk, harga dan penyenaraian untuk pengguna dengan user_id '7', ditapis mengikut syarat penyenaraian khusus.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Keputusan Sertaan Dalam MySQL Dengan Cekap Merentas Berbilang Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!