الدرس 3 من 10

شروط مركّبة

هدف الدرس

الشروط بـ AND وOR وIN وBETWEEN

01

الشرح

يمكنك أن تجمع أكثر من شرط في استعلام واحد، فـAND يشترط أن يتحقّق الشرطان معًا، وOR يكفيه أن يتحقّق أحدهما، وNOT يعكس الشرط. وتستعمل IN ('كتب', 'قرطاسية') لتقارن بقائمة من القيم، وBETWEEN 20 AND 50 لتقارن بمدى من القيم يدخل فيه الحدّان نفساهما.

وانتبه إلى ترتيب الحساب، فـAND يُحسب قبل OR كما يُحسب الضرب قبل الجمع، ولذلك فإنّ الشرط category = 'كتب' OR category = 'قرطاسية' AND price < 50 يعني كل الكتب بأيّ سعر، ومعها القرطاسية الرخيصة وحدها.

والأقواس توضّح المعنى الذي تقصده، مثل (… OR …) AND price < 50، ومع ذلك فإنّ IN يغنيك عن OR في مثل هذه الحالة.

02

المطلوب

اعرض name وprice لمنتجات الفئتين 'تقنية' و'منزل' التي سعرها من 100 إلى 300، واستبعد المنتجات النافدة (stock = 0).

الفحوص

5 فحوص
  1. العمودان name وprice
  2. النتيجة من فئتَي تقنية ومنزل فقط
  3. كل الأسعار بين 100 و300
  4. لا يوجد منتج نافد
  5. لم ينقص أيّ منتج، والسعر 100 داخل في المدى
الجداول المتاحة في هذا الدرس
CREATE TABLE products (
  id       INTEGER PRIMARY KEY,
  name     TEXT    NOT NULL,
  category TEXT    NOT NULL,
  price    INTEGER NOT NULL,
  stock    INTEGER NOT NULL
);

INSERT INTO products (name, category, price, stock) VALUES
  ('شاشة 27 بوصة',  'تقنية',   899,   4),
  ('سماعة لاسلكية', 'تقنية',   249,  12),
  ('لوحة مفاتيح',   'تقنية',   189,   0),
  ('شاحن سريع',     'تقنية',    79,  40),
  ('كرسي مكتب',     'منزل',    649,   3),
  ('رف كتب',        'منزل',    249,   7),
  ('مصباح مكتب',    'منزل',    100,  18),
  ('حقيبة ظهر',     'قرطاسية', 180,  22),
  ('دفتر ملاحظات',  'قرطاسية',  15, 200),
  ('أقلام ملونة',   'قرطاسية',  25,   0),
  ('قاموس عربي',    'كتب',      95,  10),
  ('رواية',         'كتب',      45,  30);
03

تلميحات

0/3
query.sql
المخرجاتSQLite (sql.js)

نحمّل بيئة SQLite الآن.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».