Rumah >pangkalan data >tutorial mysql >Mengapa pertanyaan SQL saya mengembalikan 'TableD is unknown' apabila menyertai empat jadual mengikut ID?

Mengapa pertanyaan SQL saya mengembalikan 'TableD is unknown' apabila menyertai empat jadual mengikut ID?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 06:05:42707semak imbas

Why is my SQL query returning

Menyambungkan Berbilang Jadual SQL melalui ID: Menyelesaikan masalah Ralat "Jadual Tidak Diketahui"

Panduan ini menangani isu biasa apabila menyertai berbilang jadual SQL menggunakan ID. Anda telah berjaya menyertai Jadual A, B dan C, tetapi penambahan Jadual D menghasilkan ralat "JadualD tidak diketahui". Ralat ini menandakan rujukan Jadual D yang salah dalam pertanyaan SQL anda. Untuk menyelesaikan masalah ini, anda mesti memautkan Jadual D dengan betul ke jadual bercantum sedia ada.

Penyelesaian

Pernyataan SQL yang diperbetulkan untuk memasukkan Jadual D ialah:

<code class="language-sql">SELECT TableA.*, TableB.*, TableC.*, TableD.*
FROM TableA
JOIN TableB ON TableB.aID = TableA.aID
JOIN TableC ON TableC.cID = TableB.cID
JOIN TableD ON TableD.dID = TableA.dID
WHERE DATE(TableC.date) = CURDATE();</code>

Pertanyaan dipertingkat ini menggunakan TableA sebagai sauh. Ia bergabung dengan TableB menggunakan aID, TableC menggunakan cID, dan akhirnya, TableD menggunakan dID (dengan mengandaikan dID wujud dalam kedua-dua TableA dan TableD). Klausa WHERE menapis hasil untuk hanya memasukkan entri yang TableC.date sepadan dengan tarikh semasa. Perhatikan penggunaan CURDATE() yang biasanya lebih disukai daripada date(now()) untuk kejelasan dan keserasian pangkalan data.

Pertimbangan Penting:

  • Kejelasan: Elakkan kurungan yang tidak diperlukan untuk kebolehbacaan yang lebih baik.
  • Struktur Logik: Pastikan penyertaan anda disusun secara logik dan dipautkan dengan betul. Semak semula sama ada ID yang digunakan untuk menyertai benar-benar wujud dan dinamakan dengan betul dalam setiap jadual.
  • Fungsi Khusus Pangkalan Data: Walaupun date(now()) berfungsi dalam sesetengah pangkalan data, CURDATE() lebih standard dan mudah alih.

Dengan mengikuti langkah-langkah ini dan mengesahkan kewujudan dan penamaan lajur ID anda, anda seharusnya berjaya menyertai keempat-empat jadual.

Atas ialah kandungan terperinci Mengapa pertanyaan SQL saya mengembalikan 'TableD is unknown' apabila menyertai empat jadual mengikut ID?. 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