AND mengekalkan rekod hanya jika kedua-dua syarat benar. OR mengekalkannya jika sekurang-kurangnya satu benar. Kurungan memaksa sebahagian syarat dikira dahulu.
Tanpa kurungan, AND dikira sebelum OR. Itulah sebabnya kedudukan kurungan sering menjadi perangkap dalam soalan pangkalan data dan penaakulan pertanyaan.
Bagaimana operator berfungsi?
| A | B | A AND B | A OR B |
|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE |
| TRUE | FALSE | FALSE | TRUE |
| FALSE | TRUE | FALSE | TRUE |
| FALSE | FALSE | FALSE | FALSE |
Menambah AND menjadikan pertanyaan lebih ketat, jadi ia hanya boleh membuang baris. Menambah OR menjadikannya lebih longgar, jadi ia hanya boleh menambah baris. Makmal Boolean dan perwakilan nombor membina jadual kebenaran seperti ini.
Contoh berlangkah
Berikut 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 |
Bandingkan dua pertanyaan.
SELECT Name FROM Plants
WHERE Type = "Herb" OR Type = "Succulent" AND Price > 6
SELECT Name FROM Plants
WHERE (Type = "Herb" OR Type = "Succulent") AND Price > 6
Pertanyaan 1. AND dahulu, jadi syaratnya bermaksud: Herb, ATAU (Succulent DAN Price > 6). Mint dan Basil ialah herba, jadi kedua-duanya lulus. Cactus ialah succulent tetapi 6.00 tidak melebihi 6, jadi gagal. Aloe ialah succulent pada 9.50, jadi lulus. Hasil: Mint, Basil, Aloe (3 baris).
Pertanyaan 2. Kurungan dahulu: tumbuhan mestilah Herb atau Succulent, dan berharga lebih daripada 6. Mint 4.50 gagal, Basil 5.00 gagal, Cactus 6.00 gagal, Aloe 9.50 lulus. Hasil: Aloe (1 baris).
Perkataan sama, kurungan berbeza, tiga baris berbanding satu.
Kesilapan yang perlu diawasi
Kesilapan lazim ialah membaca syarat dari kiri ke kanan dan mengabaikan keutamaan AND.
Jawapan salah: “Pertanyaan 1 hanya memulangkan Aloe, kerana ujian harga terpakai pada herba dan succulent.”
Bacaan itu menambah kurungan yang tiada dalam pertanyaan.
Pembetulan: tulis kurungan di sekeliling bahagian AND sebelum menguji satu baris pun. Apabila menulis pertanyaan, sentiasa tambah kurungan, walaupun ia pilihan.
Semak sendiri
1. Tumbuhan manakah dipulangkan oleh WHERE Type = "Flowering" AND Indoor = TRUE?
Lihat jawapan
Flowering: Rose (luar), Orchid (dalam), Hibiscus (luar). Hanya Orchid lulus kedua-duanya.
2. Berapa baris dipulangkan oleh WHERE Stock = 0 OR Price > 20?
Lihat jawapan
Stock = 0: Rose. Price > 20: Orchid. Bersama-sama 2 baris: Rose dan Orchid.
3. Tulis semula Type = "Herb" OR Type = "Foliage" AND Indoor = TRUE supaya ujian Indoor terpakai pada kedua-dua jenis.
Lihat jawapan
(Type = "Herb" OR Type = "Foliage") AND Indoor = TRUE
Ke mana selepas ini?
Seterusnya, belajar menerangkan mengapa pertanyaan tidak memulangkan baris. Set latihan modul mengandungi lebih banyak soalan pengumpulan.
Jika soalan pengumpulan masih tersilap ketika masa terhad, guru dalam tuisyen Computer Science dalam talian satu dengan satu boleh melatih anda dengan jadual kecil yang baharu.