Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menyertai Jadual Tanpa Hubungan Utama Asing Langsung?

Bagaimanakah Saya Boleh Menyertai Jadual Tanpa Hubungan Utama Asing Langsung?

DDD
Lepaskan: 2025-01-15 18:11:51
asal
664 orang telah melayarinya

How Can I Join Tables Without a Direct Foreign Key Relationship?

Sertai jadual dengan perhubungan utama asing melalui jadual ketiga

Penerangan Masalah

Data selalunya disimpan dalam berbilang jadual, dengan perhubungan ditakrifkan oleh kunci asing. Walau bagaimanapun, kadangkala dua jadual mungkin tidak mempunyai hubungan kunci asing langsung, tetapi ia masih boleh dicantumkan melalui jadual ketiga. Soalan ini menunjukkan cara melakukan gabungan sedemikian untuk mengekstrak maklumat khusus daripada berbilang jadual.

Penyelesaian

Bertentangan dengan andaian bahawa kunci asing diperlukan untuk cantuman jadual, kunci asing tidak diperlukan. Sebaliknya, jadual boleh digabungkan berdasarkan predikat yang ditakrifkan untuk setiap jadual.

Untuk menyertai jadual yang tidak mempunyai hubungan utama asing langsung, ikut langkah berikut:

  1. Tentukan jadual yang sesuai untuk digabungkan berdasarkan output yang dikehendaki.
  2. Gabungkan jadual menggunakan operator CROSS JOIN atau INNER JOIN.
  3. Gunakan klausa WHERE untuk menambah syarat tambahan untuk menapis data yang disambungkan.

Penjelasan terperinci

Penyata dan jadual:

Setiap jadual mempunyai predikat yang mentakrifkan baris yang terkandung di dalamnya. Contohnya, jadual Species mengandungi baris di mana nama spesies sepadan dengan jenis kayu dan ketinggian maksimumnya.

Predikat pertanyaan:

pertanyaan juga mempunyai predikat berdasarkan FROM, WHERE dan klausa lain. Alias ​​jadual membenarkan penamaan semula lajur dan memudahkan syarat gabungan.

Sertai jadual:

CROSS JOIN dan INNER JOIN gunakan AND untuk menggabungkan predikat. UNION menggunakan OR, manakala EXCEPT menggunakan AND NOT untuk menggabungkan predikat. Klausa ON dan WHERE boleh digunakan untuk menentukan syarat gabungan tambahan.

Jadual pilihan:

Untuk memilih jadual yang betul, pertimbangkan output yang diingini dan kenal pasti jadual yang mengandungi lajur yang diperlukan. Sertai mereka berdasarkan predikat yang mereka kongsi.

Kunci dan pertanyaan asing:

Kunci asing tidak menjejaskan pelaksanaan pertanyaan. Mereka menguatkuasakan kekangan integriti tetapi tidak menyekat sambungan. Pertanyaan dinilai berdasarkan predikat jadual.

Contoh pertanyaan:

Untuk mengekstrak nama hutan, nama spesies dan jenis kayu hutan wilayah "ARKTIK":

<code class="language-sql">SELECT Forest.Fo_name, Species.Sp_name, Species.Sp_woodtype
FROM Forest
INNER JOIN Tree ON Forest.Fo_name = Tree.Tr_forest
INNER JOIN Species ON Tree.Tr_species = Species.Sp_name
WHERE Forest.Fo_loc='ARCTIC'
ORDER BY Forest.Fo_name, Species.Sp_name;</code>
Salin selepas log masuk

Pertanyaan ini secara berkesan menyertai jadual Tr_species, Tr_forest dan Forest melalui lajur Species dan Tree serta menapis keputusan berdasarkan lajur Fo_loc. Keluaran diisih mengikut nama hutan dan spesies.

Nota: Contoh pertanyaan telah diperbetulkan daripada penerangan untuk memastikan ketepatan logik dan dapat menyertai tiga jadual. Keadaan ON Tree.Tr_species=Tree.Tr_forest dalam contoh asal adalah salah kerana ia cuba menggabungkan dua lajur berbeza dalam jadual. Pertanyaan yang diperbetulkan menggunakan syarat gabungan yang betul.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyertai Jadual Tanpa Hubungan Utama Asing Langsung?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan