Pertanyaan tidak memulangkan baris apabila tiada rekod lulus setiap syarat. Pertanyaan itu tetap berjalan dengan betul: pangkalan data hanya tidak menemui apa-apa yang sepadan.
Soalan peperiksaan meminta anda menerangkannya dengan perkataan, jadi anda perlu menunjuk sebab yang tepat. Pelajaran ini melengkapkan pangkalan data dan penaakulan pertanyaan.
Apakah punca yang lazim?
Semak mengikut susunan ini:
- Syarat yang tidak mungkin benar serentak. Satu medan tidak boleh sama dengan dua nilai berbeza pada masa yang sama.
- Nilai di luar data. Nilai yang diuji tiada dalam jadual, contohnya harga melebihi maksimum.
- Ejaan atau jenis tidak sepadan.
"herbs"bukan"Herb", dan nombor bukan teks. - AND sedangkan OR dimaksudkan. AND menuntut setiap syarat serentak.
- Masalah sempadan.
>tidak termasuk nilai itu sendiri.
Contoh berlangkah
Menggunakan jadual Plants:
| PlantID | Name | Type | Price | Stock | Indoor |
|---|---|---|---|---|---|
| P01 | Fern | Foliage | 12.50 | 8 | TRUE |
| P02 | Cactus | Succulent | 6.00 | 25 | TRUE |
| P03 | Rose | Flowering | 15.00 | 0 | FALSE |
| P04 | Mint | Herb | 4.50 | 40 | FALSE |
| P05 | Orchid | Flowering | 28.00 | 3 | TRUE |
| P06 | Basil | Herb | 5.00 | 12 | FALSE |
| P07 | Aloe | Succulent | 9.50 | 15 | TRUE |
| P08 | Hibiscus | Flowering | 18.00 | 6 | FALSE |
SELECT Name FROM Plants
WHERE Type = "Flowering" AND Indoor = TRUE AND Stock > 5
Pertanyaan tidak memulangkan baris. Mengapa?
Langkah 1, senaraikan rekod yang lulus syarat pertama. Type = “Flowering”: Rose, Orchid, Hibiscus.
Langkah 2, gunakan syarat kedua. Indoor = TRUE: Rose ialah FALSE, Orchid ialah TRUE, Hibiscus ialah FALSE. Hanya Orchid tinggal.
Langkah 3, gunakan syarat ketiga. Stock > 5: Orchid mempunyai 3, yang tidak melebihi 5. Orchid gagal.
Langkah 4, nyatakan sebab. Satu-satunya tumbuhan berbunga dalam rumah ialah Orchid, dan stoknya 3, jadi tiada rekod memenuhi ketiga-tiga syarat.
Jawapan akhir: tiada baris, kerana satu-satunya rekod yang lulus dua ujian pertama gagal ujian Stock. Menapis satu syarat pada satu masa menunjukkan dengan tepat di mana rekod terakhir tersingkir.
Kesilapan yang perlu diawasi
Kesilapan lazim ialah menjawab “jadual kosong” atau “pertanyaan ada ralat”.
Jawapan salah: “Jadual Plants tiada tumbuhan berbunga.”
Itu tidak benar: Rose, Orchid dan Hibiscus berbunga.
Pembetulan: namakan rekod yang tinggal selepas setiap syarat dan nyatakan ujian mana yang membuangnya. Menerangkan hasil tanpa baris tanpa menamakan satu syarat tidak mendapat markah.
Semak sendiri
1. Mengapa WHERE Type = "Herb" AND Type = "Succulent" tidak memulangkan apa-apa?
Lihat jawapan
Satu rekod hanya mempunyai satu nilai dalam Type, jadi ia tidak boleh menjadi Herb dan Succulent sekali gus. Syarat tidak mungkin kedua-duanya benar. OR akan memulangkan Mint, Basil, Cactus dan Aloe.
2. Mengapa WHERE Price > 28 tidak memulangkan apa-apa, dan perubahan apa yang memulangkan satu baris?
Lihat jawapan
Harga tertinggi ialah 28.00 (Orchid), dan > tidak memasukkannya. Menukar kepada >= 28 memulangkan Orchid.
3. Seorang pelajar menulis WHERE Type = "herb". Berapa baris yang dijangka, dan apa yang mungkin diperoleh?
Lihat jawapan
Mereka menjangka 2 baris (Mint, Basil). Sama ada ejaan huruf kecil sepadan bergantung pada sama ada pangkalan data mengabaikan huruf besar, jadi padankan ejaan tersimpan "Herb" dengan tepat untuk selamat.
Ke mana selepas ini?
Tamatkan modul dengan set latihan asli. Cuba kes hasil kosong dalam makmal latihan SQL baca sahaja untuk melihatnya berfungsi.
Jika anda mahu bantuan menukar penerangan seperti ini kepada jawapan peperiksaan yang jelas, lihat tuisyen Computer Science dalam talian satu dengan satu kami.