The WHERE clause is used to filter data to rows that meet a condition or set of conditions. Rows are often evaluated for conditions using comparison operators, logical operators, or both. On rarer occasions, methods for validating a value exists or is known for an attribute across rows are employed. Our exploration of the WHERE clause will begin by introducing the types of operators commonly used in SQL through simple examples. These examples will build onto your existing knowledge of the SELECT and FROM clauses. I will then showcase more complex examples of the WHERE clause incorporating operands or things involved in the testing of some condition.
Before reading further, consider reviewing the Example Data section below to familiarize yourself with the data being used throughout the examples on this page. If you are already familiar with the data, then skip to the Comparison Operators section
Example Data
The schemas, corresponding tables, and data used in the example problems can be found at livesql.oracle.com. To more easily follow the examples covered on this page, consider first reading the table descriptions below and reviewing each table’s contents. To review the data maintained in each table, click on the icon next to the table name. To hide the data, click the icon again.
oe.categories_tab
Contains information related to each product category and the hierarchal relationship between product categories and their corresponding parent category, if applicable. There is one row per product category.
| category_name | category_description | category_id | parent_category_id |
|---|---|---|---|
| hardware | computer hardware and peripherals | 10 | 90 |
| hardware1 | monitors | 11 | 10 |
| hardware2 | printers | 12 | 10 |
| hardware3 | harddisks | 13 | 10 |
| hardware4 | memory components/upgrades | 14 | 10 |
| hardware5 | processors, sound and video cards, network cards, motherboards | 15 | 10 |
| hardware6 | keyboards, mouses, mouse pads | 16 | 10 |
| hardware7 | other peripherals (CD-ROM, DVD, tape cartridge drives, …) | 17 | 10 |
| hardware8 | miscellaneous hardware (cables, screws, power supplies …) | 19 | 10 |
| software | computer software | 20 | 90 |
| software1 | spreadsheet software | 21 | 20 |
| software2 | word processing software | 22 | 20 |
| software3 | database software | 23 | 20 |
| software4 | operating systems | 24 | 20 |
| software5 | software development tools (including languages) | 25 | 20 |
| software6 | miscellaneous software | 29 | 20 |
| office equipment | office furniture and supplies | 30 | 90 |
| office1 | capitalizable assets (desks, chairs, phones …) | 31 | 30 |
| office2 | office supplies for daily use (pencils, erasers, staples, …) | 32 | 30 |
| office3 | manuals, other books | 33 | 30 |
| office4 | miscellaneous office supplies | 39 | 30 |
| online catalog | catalog of computer hardware, software, and office equipment | 90 | – |
oe.product_information
Contains information related to each product. There is one row per product.
| product_id | product_name | product_description | category_id | weight_class | warranty_period | supplier_id | product_status | list_price | min_price | catalog_url |
|---|---|---|---|---|---|---|---|---|---|---|
| 1797 | Inkjet C/8/HQ | Inkjet printer, color, 8 pages per minute, high resolution (photo quality). Memory: 16MB. Dimensions (HxWxD): 7.3 x 17.5 x 14 inch. Paper size: A4, US Letter, envelopes. Interface: Centronics parallel, IEEE 1284 compliant. | 12 | 3 | 2 | 102094 | orderable | 349 | 288 | http://www.supp-102094.com/cat/hw/p1797.html |
| 2459 | LaserPro 1200/8/BW | Professional black and white laserprinter, resolution 1200 dpi, 8 pages per second. Dimensions (HxWxD): 22.37 x 19.86 x 21.92 inch. Software: Enhanced driver support for SPNIX v4.0; MS-DOS Built-in printer drivers: ZoomSmart scaling technology, billboard, handout, mirror, watermark, print preview, quick sets, emulate laserprinter margins. | 12 | 5 | 3 | 102099 | under development | 699 | 568 | http://www.supp-102099.com/cat/hw/p2459.html |
| 3127 | LaserPro 600/6/BW | Standard black and white laserprinter, resolution 600 dpi, 6 pages per second. Interface: Centronics parallel, IEEE 1284 compliant. Memory: 8MB 96KB receiver buffer. MS-DOS ToolBox utilities for SPNIX AutoCAM v.17 compatible driver. | 12 | 4 | 3 | 102087 | orderable | 498 | 444 | http://www.supp-102087.com/cat/hw/p3127.html |
| 2254 | HD 10GB /I | 10GB capacity hard disk drive (internal). These drives are intended for use in today’s demanding, data-critical enterprise environments and are ideal for use in RAID applications. Universal option kits are configured and pre-mounted in the appropriate hot plug tray for immediate installation into your corporate server or storage system. | 13 | 2 | 2 | 102071 | obsolete | 453 | 371 | http://www.supp-102071.com/cat/hw/p2254.html |
| 3353 | HD 10GB /R | 10GB Removable hard disk drive for 10GB Removable HD drive. Supra7 disk drives provide the latest technology to improve enterprise performance, increasing the maximum data transfer rate up to 160MB/s. | 13 | 1 | 3 | 102071 | obsolete | 489 | 413 | http://www.supp-102071.com/cat/hw/p3353.html |
| 3069 | HD 10GB /S | 10GB hard disk drive for Standard Mount. Backward compatible with Supra5 systems, users are free to deploy and re-deploy these drives to quickly deliver increased storage capacity. Supra drives eliminate the risk of firmware incompatibility. | 13 | 1 | 2 | 102051 | obsolete | 436 | 350 | http://www.supp-102051.com/cat/hw/p3069.html |
| 2253 | HD 10GB @5400 /SE | 10GB capacity hard disk drive (external) SCSI interface, 5400 RPM. Universal option kits are configured and pre-mounted in the appropriate hot plug tray for immediate installation into your corporate server or storage system. Supra drives eliminate the risk of firmware incompatibility. | 13 | 2 | 3 | 102069 | obsolete | 399 | 322 | http://www.supp-102069.com/cat/hw/p2253.html |
| 3354 | HD 12GB /I | 12GB capacity harddisk drive (internal). Supra drives eliminate the risk of firmware incompatibility. Backward compatibility: You can mix or match Supra2 and Supra3 devices for optimized solutions and future growth. | 13 | 2 | 2 | 102066 | orderable | 543 | 478 | http://www.supp-102066.com/cat/hw/p3354.html |
| 3072 | HD 12GB /N | 12GB hard disk drive for Narrow Mount. Supra9 hot pluggable hard disk drives provide the ability to install or remove drives on-line. Our hot pluggable hard disk drives are required to meet our rigorous standards for reliability and performance. | 13 | 1 | 3 | 102061 | orderable | 567 | 507 | http://www.supp-102061.com/cat/hw/p3072.html |
| 3334 | HD 12GB /R | 12GB Removable hard disk drive. With compatibility across many enterprise platforms, you are free to deploy and re-deploy this drive to quickly deliver increased storage capacity. Supra7 Universal disk drives are the second generation of high performance hot plug drives sharing compatibility across corporate servers and external storage enclosures. | 13 | 2 | 3 | 102090 | orderable | 612 | 512 | http://www.supp-102090.com/cat/hw/p3334.html |
| 3071 | HD 12GB /S | 12GB hard disk drive for Standard Mount. Supra9 hot pluggable hard disk drives provide the ability to install or remove drives on-line. Our hot pluggable hard disk drives are required to meet our rigorous standards for reliability and performance. | 13 | 1 | 3 | 102071 | orderable | 633 | 553 | http://www.supp-102071.com/cat/hw/p3071.html |
| 2255 | HD 12GB @7200 /SE | 12GB capacity hard disk drive (external) SCSI, 7200 RPM. These drives are intended for use in today’s demanding, data-critical enterprise environments and can be used in RAID applications. Universal option kits are configured and pre-mounted in the appropriate hot plug tray for immediate installation into your corporate server or storage system. | 13 | 2 | 2 | 102057 | orderable | 775 | 628 | http://www.supp-102057.com/cat/hw/p2255.html |
| 1743 | HD 18.2GB @10000 /E | External hard drive disk – 18.2 GB, rated up to 10,000 RPM. These drives are intended for use in today’s demanding, data-critical enterprise environments and are ideal for use in RAID applications. | 13 | 3 | 3 | 102078 | planned | 800 | 661 | http://www.supp-102078.com/cat/hw/p1743.html |
| 2382 | HD 18.2GB@10000 /I | 18.2 GB SCSI hard disk @ 10000 RPM (internal). Supra7 Universal disk drives provide an unequaled level of investment protection and simplification for customers by enabling drive compatibility across many enterprise platforms. | 13 | 3 | 3 | 102050 | under development | 850 | 731 | http://www.supp-102050.com/cat/hw/p2382.html |
| 3399 | HD 18GB /SE | 18GB SCSI external hard disk drive. Supra5 Universal hard disk drives provide the ability to hot plug between various servers, RAID arrays, and external storage shelves. | 13 | 3 | 2 | 102083 | under development | 815 | 706 | http://www.supp-999999.com/cat/hw/p3333.html |
| 3073 | HD 6GB /I | 6GB capacity hard disk drive (internal). Supra drives eliminate the risk of firmware incompatibility. | 13 | 2 | 5 | 102072 | obsolete | 224 | 197 | http://www.supp-102083.com/cat/hw/p3073.html |
| 1768 | HD 8.2GB @5400 | Hard drive disk – 8.2 GB, rated up to 5,400 RPM. Supra drives eliminate the risk of firmware incompatibility. Standard serial RS-232 interface. | 13 | 2 | 2 | 102093 | orderable | 345 | 306 | http://www.supp-102093.com/cat/hw/p1768.html |
| 2410 | HD 8.4GB @5400 | 8.4 GB hard disk @ 5400 RPM. Reduced cost of ownership: Drives can be utilized across enterprise platforms. This hot pluggable hard disk drive is required to meet your rigorous standards for reliability and performance. | 13 | 2 | 3 | 102061 | orderable | 357 | 319 | http://www.supp-102061.com/cat/hw/p2410.html |
| 2257 | HD 8GB /I | 8GB capacity hard disk drive (internal). Supra9 hot pluggable hard disk drives provide the ability to install or remove drives on-line. Backward compatibility: You can mix Supra2 and Supra3 devices for optimized solutions and future growth. | 13 | 1 | 3 | 102061 | orderable | 399 | 338 | http://www.supp-102061.com/cat/hw/p2257.html |
| 3400 | HD 8GB /SE | 8GB capacity SCSI hard disk drive (external). Supra7 disk drives provide the latest technology to improve enterprise performance, increasing the maximum data transfer rate up to 255MB/s. | 13 | 2 | 3 | 102063 | orderable | 389 | 337 | http://www.supp-102063.com/cat/hw/p3400.html |
| 3355 | HD 8GB /SI | 8GB SCSI hard disk drive, internal. With compatibility across many enterprise platforms, you are free to deploy and re-deploy this drive to quickly deliver increased storage capacity. | 13 | 1 | 2 | 102050 | orderable | – | – | http://www.supp-102050.com/cat/hw/p3355.html |
| 1772 | HD 9.1GB @10000 | Hard disk drive – 9.1 GB, rated up to 10,000 RPM. These drives are intended for use in data-critical enterprise environments. Ease of doing business: you can easily select the drives you need regardless of the application in which they will be deployed. | 13 | 3 | 5 | 102070 | orderable | 456 | 393 | http://www.supp-102070.com/cat/hw/p1772.html |
| 2243 | Monitor 17/HR/F | Monitor 17 inch (16 viewable) high resolution, flat screen. High density photon gun with Enhanced Elliptical Correction System for more consistent, accurate focus across the screen, even in the corners. | 11 | 4 | -6 | 102060 | orderable | 350 | 302 | http://www.supp-102060.com/cat/hw/p2243.html |
| 3057 | Monitor 17/SD | CRT Monitor 17 inch (16 viewable) short depth. Delivers outstanding image clarity and precision. Gives professional color, technical engineering, and visualization/animation users the color fidelity they demand, plus a large desktop for enhanced productivity. | 11 | 4 | -6 | 102055 | orderable | 369 | 320 | http://www.supp-102055.com/cat/hw/p3057.html |
| 3061 | Monitor 19/SD | CRT Monitor 19 inch (18 viewable) short depth. High-contrast black screen coating: produces superior contrast and grayscale performance. The newly designed, amplified professional speakers with dynamic bass response bring all of your multimedia audio experiences to life with crisp, true-to-life sound and rich, deep bass tones. Plus, color-coded cables, simple plug-and-play setup and digital on-screen controls mean you are ready to set your sights on outrageous multimedia and the incredible Internet in just minutes. | 11 | 5 | -9 | 102094 | orderable | 499 | 437 | http://www.supp-102094.com/cat/hw/p3061.html |
| 2245 | Monitor 19/SD/M | Monitor 19 (18 Viewable) short depth, Monochrome. Outstanding image performance in a compact design. A simple, on-screen dislay menu helps you easily adjust screen dimensions, colors and image attributes. Just plug your monitor into your PC and you are ready to go. | 11 | 5 | -9 | 102053 | orderable | 512 | 420 | http://www.supp-102053.com/cat/hw/p2245.html |
| 3065 | Monitor 21/D | CRT Monitor 21 inch (20 viewable). Digital OptiScan technology: supports resolutions up to 1600 x 1200 at 75Hz. Dimensions (HxWxD): 8.3 x 18.5 x 15 inch. The detachable or attachable monitor-powered Platinum Series speakers offer crisp sound and the convenience of a digital audio player jack. Just plug in your digital audio player and listen to tunes without powering up your PC. | 11 | 5 | 1 | 102051 | orderable | 999 | 875 | http://www.supp-102051.com/cat/hw/p3065.html |
| 3331 | Monitor 21/HR | 21 inch monitor (20 inch viewable) high resolution. This monitor is ideal for business, desktop publishing, and graphics-intensive applications. Enjoy the productivity that a large monitor can bring via more workspace for running applications. | 11 | 5 | 1 | 102083 | orderable | 879 | 785 | http://www.supp-102083.com/cat/hw/p3331.html |
| 2252 | Monitor 21/HR/M | Monitor 21 inch (20 viewable) high resolution, monochrome. Unit size: 35.6 x 29.6 x 33.3 cm (14.6 kg) Package: 40.53 x 31.24 x 35.39 cm (16.5 kg). Horizontal frequency 31.5 – 54 kHz, Vertical frequency 50 – 120 Hz. Universal power supply 90 – 132 V, 50 – 60 Hz. | 11 | 5 | -5 | 102079 | obsolete | 889 | 717 | http://www.supp-102079.com/cat/hw/p2252.html |
| 3064 | Monitor 21/SD | Monitor 21 inch (20 viewable) short depth. Features include a 0.25-0.28 Aperture Grille Pitch, resolution support up to 1920 x 1200 at 76Hz, on-screen displays, and a conductive anti-reflective film coating. | 11 | 5 | -5 | 102096 | planned | 1023 | 909 | http://www.supp-102096.com/cat/hw/p3064.html |
| 3155 | Monitor Hinge – HD | Monitor Hinge, heavy duty, maximum monitor weight 30 kg | 11 | 4 | 10 | 102092 | orderable | 49 | 42 | http://www.supp-102092.com/cat/hw/p3155.html |
| 3234 | Monitor Hinge – STD | Standard Monitor Hinge, maximum monitor weight 10 kg | 11 | 3 | 10 | 102072 | orderable | 39 | 34 | http://www.supp-102072.com/cat/hw/p3234.html |
| 3350 | Plasma Monitor 10/LE/VGA | 10 inch low energy plasma monitor, VGA resolution | 11 | 3 | 1 | 102068 | orderable | 740 | 630 | http://www.supp-102068.com/cat/hw/p3350.html |
| 2236 | Plasma Monitor 10/TFT/XGA | 10 inch TFT XGA flatscreen monitor for laptop computers | 11 | 3 | 1 | 102090 | under development | 964 | 863 | http://www.supp-102090.com/cat/hw/p2236.html |
| 3054 | Plasma Monitor 10/XGA | 10 inch standard plasma monitor, XGA resolution. This virtually-flat, high-resolution screen delivers outstanding image quality with reduced glare. | 11 | 3 | 1 | 102060 | orderable | 600 | 519 | http://www.supp-102060.com/cat/hw/p3054.html |
| 1782 | Compact 400/DQ | 400 characters per second high-speed draft printer. Dimensions (HxWxD): 17.34 x 24.26 x 26.32 inch. Interface: RS-232 serial (9-pin), no expansion slots. Paper size: A4, US Letter. | 12 | 4 | -5 | 102088 | obsolete | 125 | 108 | http://www.supp-102088.com/cat/hw/p1782.html |
| 2430 | Compact 400/LQ | 400 characters per second high-speed letter-quality printer. Dimensions (HxWxD): 12.37 x 27.96 x 23.92 inch. Interface: RS-232 serial (25-pin), 3 expansion slots. Paper size: A2, A3, A4. | 12 | 4 | 2 | 102087 | orderable | 175 | 143 | http://www.supp-102087.com/cat/hw/p2430.html |
| 1792 | Industrial 600/DQ | Wide carriage color capability 600 characters per second high-speed draft printer. Dimensions (HxWxD): 22.31 x 25.73 x 20.12 inch. Paper size: 3×5 inch to 11×17 inch full bleed wide format. | 12 | 4 | 5 | 102088 | orderable | 225 | 180 | http://www.supp-102088.com/cat/hw/p1792.html |
| 1791 | Industrial 700/HD | 700 characters per second dot-matrix printer with harder body and dust protection for industrial uses. Interface: Centronics parallel, IEEE 1284 compliant. Paper size: 3×5 inch to 11×17 inch full bleed wide format. Memory: 4MB. Dimensions (HxWxD): 9.3 x 16.5 x 13 inch. | 12 | 5 | 5 | 102086 | orderable | 275 | 239 | http://www.supp-102086.com/cat/hw/p1791.html |
| 2302 | Inkjet B/6 | Inkjet Printer, black and white, 6 pages per minute, resolution 600×300 dpi. Interface: Centronics parallel, IEEE 1284 compliant. Dimensions (HxWxD): 7.3 x 17.5 x 14 inch. Paper size: A3, A4, US legal. No expansion slots. | 12 | 3 | 2 | 102096 | orderable | 150 | 121 | http://www.supp-102096.com/cat/hw/p2302.html |
| 2453 | Inkjet C/4 | Inkjet Printer, color (with two separate ink cartridges), 6 pages per minute black and white, 4 pages per minute color, resolution 600×300 dpi. Interface: Biodirectional IEEE 1284 compliant parallel interface and RS-232 serial (9-pin) interface 2 open EIO expansion slots. Memory: 8MB 96KB receiver buffer. | 12 | 3 | 2 | 102090 | orderable | 195 | 174 | http://www.supp-102090.com/cat/hw/p2453.html |
| 2810 | Inkvisible Pens | Rollerball pen is equipped with a smooth precision tip. See-through rubber grip allows for a visible ink supply and comfortable writing. 4-pack with 1 each, black, blue, red, green. | 32 | 1 | 0 | 103095 | orderable | 6 | 4 | http://www.supp-103095.com/cat/off/p2810.html |
| 2870 | Pencil – Mech | Ergonomically designed mechanical pencil for improved writing comfort. Refillable erasers and leads. Available in three lead sizes: .5mm (fine); .7mm (medium); and .9mm (thick). | 32 | 1 | 2 | 103097 | orderable | 5 | 4 | http://www.supp-103097.com/cat/off/p2870.html |
| 1781 | CDW 20/48/E | CD Writer, read 48x, write 20x | 17 | 2 | -9 | 102060 | orderable | 233 | 206 | http://www.supp-102060.com/cat/hw/p1781.html |
| 2264 | CDW 20/48/I | CD-ROM drive: read 20x, write 48x (internal) | 17 | 2 | -9 | 102060 | orderable | 223 | 181 | http://www.supp-102060.com/cat/hw/p2264.html |
| 2260 | DFD 1.44/3.5 | Dual Floppy Drive – 1.44 MB – 3.5 | 17 | 2 | -6 | 102062 | orderable | 67 | 54 | http://www.supp-102062.com/cat/hw/p2260.html |
| 2266 | DVD 12x | DVD-ROM drive: speed 12x | 17 | 3 | 1 | 102099 | orderable | 333 | 270 | http://www.supp-102099.com/cat/hw/p2266.html |
| 3077 | DVD 8x | DVD – ROM drive, 8x speed. Will probably become obsolete pretty soon… | 17 | 3 | 1 | 102099 | orderable | 274 | 237 | http://www.supp-102099.com/cat/hw/p3077.html |
| 2259 | FD 1.44/3.5 | Floppy Drive – 1.44 MB High Density capacity – 3.5 inch chassis | 17 | 1 | -9 | 102086 | orderable | 39 | 32 | http://www.supp-102086.com/cat/hw/p2259.html |
| 2261 | FD 1.44/3.5/E | Floppy disk drive – 1.44 MB (high density) capacity – 3.5 inch (external) | 17 | 2 | -9 | 102086 | orderable | 42 | 37 | http://www.supp-102086.com/cat/hw/p2261.html |
| 3082 | Modem – 56/90/E | Modem – 56kb per second, v.90 PCI Global compliant. External; for power supply 110V. | 17 | 1 | 1 | 102068 | orderable | 81 | 72 | http://www.supp-102068.com/cat/hw/p3082.html |
| 2270 | Modem – 56/90/I | Modem – 56kb per second, v.90 PCI Global compliant. Internal, for standard chassis (3.5 inch). | 17 | 1 | 1 | 102068 | orderable | 66 | 56 | http://www.supp-102068.com/cat/hw/p2270.html |
| 2268 | Modem – 56/H/E | Standard Hayes compatible modem – 56kb per second, external. Power supply: 220V. | 17 | 1 | 1 | 102068 | obsolete | 77 | 67 | http://www.supp-102068.com/cat/hw/p2268.html |
| 3083 | Modem – 56/H/I | Standard Hayes modem – 56kb per second, internal, for standard 3.5 inch chassis. | 17 | 1 | 1 | 102068 | orderable | 67 | 56 | http://www.supp-102068.com/cat/hw/p3083.html |
| 2374 | Modem – C/100 | DOCSIS/EURODOCSIS 1.0/1.1-compliant external cable modem | 17 | 2 | -5 | 102064 | orderable | 65 | 54 | http://www.supp-102064.com/cat/hw/p2374.html |
| 1740 | TD 12GB/DAT | Tape drive – 12 gigabyte capacity, DAT format. | 17 | 2 | -5 | 102075 | orderable | 134 | 111 | http://www.supp-102075.com/cat/hw/p1740.html |
| 2409 | TD 7GB/8 | Tape drive, 7GB capacity, 8mm cartridge tape. | 17 | 2 | -5 | 102054 | orderable | 210 | 177 | http://www.supp-102054.com/cat/hw/p2409.html |
| 2262 | ZIP 100 | ZIP Drive, 100 MB capacity (external) plus cable for parallel port connection | 17 | 2 | -5 | 102054 | orderable | 98 | 81 | http://www.supp-102054.com/cat/hw/p2262.html |
| 2522 | Battery – EL | Extended life battery, for laptop computers | 19 | 2 | -3 | 102078 | orderable | 44 | 39 | http://www.supp-102078.com/cat/hw/p2522.html |
| 2278 | Battery – NiHM | Rechargeable NiHM battery for laptop computers | 19 | 1 | -3 | 102078 | orderable | 55 | 48 | http://www.supp-102078.com/cat/hw/p2278.html |
| 2418 | Battery Backup (DA-130) | Single-battery charger with LED indicators | 19 | 1 | -3 | 102074 | orderable | 61 | 52 | http://www.supp-102074.com/cat/hw/p2418.html |
| 2419 | Battery Backup (DA-290) | Two-battery charger with LED indicators | 19 | 1 | -3 | 102074 | orderable | 72 | 60 | http://www.supp-102074.com/cat/hw/p2419.html |
| 3097 | Cable Connector – 32R | Cable Connector – 32 pin ribbon | 19 | 1 | 0 | 102055 | orderable | 3 | 2 | http://www.supp-102055.com/cat/hw/p3097.html |
| 3099 | Cable Harness | Cable harness to organize and bundle computer wiring | 19 | 1 | 0 | 102055 | orderable | 4 | 3 | http://www.supp-102055.com/cat/hw/p3099.html |
| 2380 | Cable PR/15/P | 15 foot parallel printer cable | 19 | 2 | -1 | 102055 | orderable | 6 | 5 | http://www.supp-102055.com/cat/hw/p2380.html |
| 2408 | Cable PR/P/6 | Standard Centronics 6ft printer cable, parallel port | 19 | 1 | -1 | 102055 | orderable | 4 | 3 | http://www.supp-102055.com/cat/hw/p2408.html |
| 2457 | Cable PR/S/6 | Standard RS232 serial printer cable, 6 feet | 19 | 1 | -1 | 102055 | orderable | 5 | 4 | http://www.supp-102055.com/cat/hw/p2457.html |
| 2373 | Cable RS232 10/AF | 10 ft RS232 cable with F/F and 9F/25F adapters | 19 | 2 | 1 | 102055 | orderable | 6 | 4 | http://www.supp-102055.com/cat/hw/p2373.html |
| 1734 | Cable RS232 10/AM | 10 ft RS232 cable with M/M and 9M/25M adapters | 19 | 2 | 1 | 102055 | orderable | 6 | 5 | http://www.supp-102055.com/cat/hw/p1734.html |
| 1737 | Cable SCSI 10/FW/ADS | 10ft SCSI2 F/W Adapt to DSxx0 Cable | 19 | 2 | -2 | 102095 | orderable | 8 | 6 | http://www.supp-102095.com/cat/hw/p1737.html |
| 1745 | Cable SCSI 20/WD->D | 20ft SCSI2 Wide Disk Store to Disk Store Cable | 19 | 2 | -2 | 102095 | orderable | 9 | 7 | http://www.supp-102095.com/cat/hw/p1745.html |
| 2982 | Drive Mount – A | Drive Mount assembly kit | 19 | 2 | -1 | 102057 | orderable | 44 | 35 | http://www.supp-102057.com/cat/hw/p2982.html |
| 3277 | Drive Mount – A/T | Drive Mount assembly kit for tower PC | 19 | 2 | 1 | 102057 | orderable | 36 | 29 | http://www.supp-102057.com/cat/hw/p3277.html |
| 2976 | Drive Mount – D | Drive Mount for desktop PC | 19 | 2 | 1 | 102057 | orderable | 52 | 44 | http://www.supp-102057.com/cat/hw/p2976.html |
| 3204 | Envoy DS | Envoy Docking Station | 19 | 3 | 2 | 102060 | orderable | 126 | 107 | http://www.supp-102060.com/cat/hw/p3204.html |
| 2638 | Envoy DS/E | Enhanced Envoy Docking Station | 19 | 3 | 2 | 102060 | orderable | 137 | 111 | http://www.supp-102060.com/cat/hw/p2638.html |
| 3020 | Envoy IC | Envoy Internet Computer, Plug&Play | 19 | 4 | 1 | 102060 | orderable | 449 | 366 | http://www.supp-102060.com/cat/hw/p3020.html |
| 1948 | Envoy IC/58 | Internet computer with built-in 58K modem | 19 | 4 | -5 | 102060 | orderable | 498 | 428 | http://www.supp-102060.com/cat/hw/p1948.html |
| 3003 | Laptop 128/12/56/v90/110 | Envoy Laptop, 128MB memory, 12GB hard disk, v90 modem, 110V power supply. | 19 | 4 | -5 | 102060 | orderable | 3219 | 2606 | http://www.supp-102060.com/cat/hw/p3003.html |
| 2999 | Laptop 16/8/110 | Envoy Laptop, 16MB memory, 8GB hard disk, 110V power supply (US only). | 19 | 3 | -5 | 102060 | obsolete | 999 | 800 | http://www.supp-102060.com/cat/hw/p2999.html |
| 3000 | Laptop 32/10/56 | Envoy Laptop, 32MB memory, 10GB hard disk, 56K Modem, universal power supply (switchable). | 19 | 4 | -5 | 102060 | orderable | 1749 | 1542 | http://www.supp-102060.com/cat/hw/p3000.html |
| 3001 | Laptop 48/10/56/110 | Envoy Laptop, 48MB memory, 10GB hard disk, 56K modem, 110V power supply. | 19 | 4 | -5 | 102060 | obsolete | 2556 | 2073 | http://www.supp-102060.com/cat/hw/p3001.html |
| 3004 | Laptop 64/10/56/220 | Envoy Laptop, 64MB memory, 10GB hard disk, 56K modem, 220V power supply. | 19 | 4 | -5 | 102060 | orderable | 2768 | 2275 | http://www.supp-102060.com/cat/hw/p3004.html |
| 3391 | PS 110/220 | Power Supply – switchable, 110V/220V | 19 | 2 | -5 | 102062 | orderable | 85 | 75 | http://www.supp-102062.com/cat/hw/p3391.html |
| 3124 | PS 110V /T | Power supply for tower PC, 110V | 19 | 2 | 1 | 102062 | orderable | 84 | 70 | http://www.supp-102062.com/cat/hw/p3124.html |
| 1738 | PS 110V /US | 110 V Power Supply – US compatible | 19 | 2 | 1 | 102062 | orderable | 86 | 70 | http://www.supp-102062.com/cat/hw/p1738.html |
| 2377 | PS 110V HS/US | 110 V hot swappable power supply – US compatible | 19 | 2 | 1 | 102062 | orderable | 97 | 82 | http://www.supp-102062.com/cat/hw/p2377.html |
| 2299 | PS 12V /P | Power Supply – 12v portable | 19 | 2 | 1 | 102062 | orderable | 76 | 64 | http://www.supp-102062.com/cat/hw/p2299.html |
| 2414 | HD 9.1GB @10000 /I | 9.1 GB SCSI hard disk @ 10000 RPM (internal). Supra7 disk drives are available in 10,000 RPM spindle speeds and capacities of 18GB and 9.1 GB. SCSI and RS-232 interfaces. | 13 | 3 | 5 | 102098 | orderable | 454 | 399 | http://www.supp-102098.com/cat/hw/p2414.html |
| 2415 | HD 9.1GB @7200 | 9.1 GB hard disk @ 7200 RPM. Universal option kits are configured and pre-mounted in the appropriate hot plug tray for immediate installation into your corporate server or storage system. | 13 | 3 | 5 | 102063 | orderable | 359 | 309 | http://www.supp-102063.com/cat/hw/p2415.html |
| 2395 | 32MB Cache /M | 32MB Mirrored cache memory (100-MHz Registered SDRAM) | 14 | 1 | -6 | 102093 | orderable | 123 | 109 | http://www.supp-102093.com/cat/hw/p2395.html |
| 1755 | 32MB Cache /NM | 32MB Non-Mirrored cache memory | 14 | 1 | -6 | 102076 | orderable | 121 | 99 | http://www.supp-102076.com/cat/hw/p1755.html |
| 2406 | 64MB Cache /M | 64MB Mirrored cache memory | 14 | 1 | -6 | 102059 | orderable | 223 | 178 | http://www.supp-102059.com/cat/hw/p2406.html |
| 2404 | 64MB Cache /NM | 64 MB Non-mirrored cache memory. FPM memory chips are implemented on 5 volt SIMMs, but are also available on 3.3 volt DIMMs. | 14 | 1 | -6 | 102087 | orderable | 221 | 180 | http://www.supp-102087.com/cat/hw/p2404.html |
| 1770 | 8MB Cache /NM | 8MB Non-Mirrored Cache Memory (100-MHz Registered SDRAM) | 14 | 1 | -6 | 102050 | orderable | – | 73 | http://www.supp-102050.com/cat/hw/p1770.html |
| 2412 | 8MB EDO Memory | 8 MB 8×32 EDO SIM memory. Extended Data Out memory differs from FPM in a small, but significant design change. Unlike FPM, the data output drivers for EDO remain on when the memory controller removes the column address to begin the next cycle. Therefore, a new data cycle can begin before the previous cycle has completed. EDO is available on SIMMs and DIMMs, in 3.3 and 5 volt varieties. | 14 | 1 | -6 | 102058 | obsolete | 98 | 83 | http://www.supp-102058.com/cat/hw/p2412.html |
| 2378 | DIMM – 128 MB | 128 MB DIMM memory. The main reason for the change from SIMMs to DIMMs is to support the higher bus widths of 64-bit processors. DIMMs are 64- or 72-bits wide; SIMMs are only 32- or 36-bits wide (with parity). | 14 | 1 | -6 | 102050 | orderable | 305 | 247 | http://www.supp-102050.com/cat/hw/p2378.html |
| 3087 | DIMM – 16 MB | Citrus OLX DIMM – 16 MB capacity. | 14 | 1 | -6 | 102081 | obsolete | 124 | 99 | http://www.supp-102081.com/cat/hw/p3087.html |
| 2384 | DIMM – 1GB | Memory DIMM: RAM – 1 GB capacity. | 14 | 1 | -6 | 102074 | under development | 599 | 479 | http://www.supp-102074.com/cat/hw/p2384.html |
| 1749 | DIMM – 256MB | Memory DIMM: RAM 256 MB. (100-MHz Registered SDRAM) | 14 | 1 | -6 | 102053 | orderable | 337 | 300 | http://www.supp-102053.com/cat/hw/p1749.html |
| 1750 | DIMM – 2GB | Memory DIMM: RAM, 2 GB capacity. | 14 | 1 | -6 | 102052 | orderable | 699 | 560 | http://www.supp-102052.com/cat/hw/p1750.html |
| 2394 | DIMM – 32MB | 32 MB DIMM Memory upgrade | 14 | 1 | -6 | 102054 | orderable | 128 | 106 | http://www.supp-102054.com/cat/hw/p2394.html |
| 2400 | DIMM – 512 MB | 512 MB DIMM memory. Improved memory upgrade granularity: Fewer DIMMs are required to upgrade a system than it would require if using SIMMs in the same system. Increased maximum memory ceilings: Given the same number of memory slots, the maximum memory of a system using DIMMs is more than one using SIMMs. DIMMs have separate contacts on each side of the board, which provide two times the data rate as one SIMM. | 14 | 1 | 1 | 102098 | under development | 448 | 380 | http://www.supp-102098.com/cat/hw/p2400.html |
| 1763 | DIMM – 64MB | Memory DIMM: RAM, 64MB (100-MHz Unregistered ECC SDRAM) | 14 | 1 | 1 | 102069 | orderable | 247 | 202 | http://www.supp-102069.com/cat/hw/p1763.html |
| 2396 | EDO – 32MB | Memory EDO SIM: RAM, 32 MB (100-MHz Unregistered ECC SDRAM). Like FPM, EDO is available on SIMMs and DIMMs, in 3.3 and 5 volt varieties If EDO memory is installed in a computer that was not designed to support it, the memory may not work. | 14 | 1 | -6 | 102051 | orderable | 179 | 149 | http://www.supp-102051.com/cat/hw/p2396.html |
| 2272 | RAM – 16 MB | Memory SIMM: RAM – 16 MB capacity. | 14 | 1 | 1 | 102074 | obsolete | 135 | 110 | http://www.supp-102074.com/cat/hw/p2272.html |
| 2274 | RAM – 32 MB | Memory SIMM: RAM – 32 MB capacity. | 14 | 1 | 1 | 102064 | orderable | 161 | 135 | http://www.supp-102064.com/cat/hw/p2274.html |
| 3090 | RAM – 48 MB | Random Access Memory, SIMM – 48 MB capacity. | 14 | 1 | 1 | 102084 | orderable | 193 | 170 | http://www.supp-102084.com/cat/hw/p3090.html |
| 1739 | SDRAM – 128 MB | SDRAM memory, 128 MB capacity. SDRAM can access data at speeds up to 100 MHz, which is up to four times as fast as standard DRAMs. The advantages of SDRAM can be fully realized, however, only by computers designed to support SDRAM. SDRAM is available on 5 and 3.3 volt DIMMs. | 14 | 1 | -9 | 102077 | orderable | 299 | 248 | http://www.supp-102077.com/cat/hw/p1739.html |
| 3359 | SDRAM – 16 MB | SDRAM memory upgrade module, 16 MB. Synchronous Dynamic Random Access Memory was introduced after EDO. Its architecture and operation are based on those of the standard DRAM, but SDRAM provides a revolutionary change to main memory that further reduces data retrieval times. SDRAM is synchronized to the system clock that controls the CPU. This means that the system clock controlling the functions of the microprocessor also controls the SDRAM functions. This enables the memory controller to know on which clock cycle a data request will be ready, and therefore eliminates timing delays. | 14 | 1 | -9 | 102059 | orderable | 111 | 99 | http://www.supp-102059.com/cat/hw/p3359.html |
| 3088 | SDRAM – 32 MB | SDRAM module with ECC – 32 MB capacity. SDRAM has multiple memory banks that can work simultaneously. Switching between banks allows for a continuous data flow. | 14 | 1 | -9 | 102057 | orderable | 258 | 220 | http://www.supp-102057.com/cat/hw/p3088.html |
| 2276 | SDRAM – 48 MB | Memory SIMM: RAM – 48 MB. SDRAM can operate in burst mode. In burst mode, when a single data address is accessed, an entire block of data is retrieved rather than just the one piece. The assumption is that the next piece of data that will be requested will be sequential to the previous. Since this is usually the case, data is held readily available. | 14 | 1 | -9 | 102058 | orderable | 269 | 215 | http://www.supp-102058.com/cat/hw/p2276.html |
| 3086 | VRAM – 16 MB | Citrus Video RAM module – 16 MB capacity. VRAM is used by the video system in a computer to store video information and is reserved exclusively for video operations. It was developed to provide continuous streams of serial data for refreshing video screens. | 14 | 1 | -6 | 102056 | orderable | 211 | 186 | http://www.supp-102056.com/cat/hw/p3086.html |
| 3091 | VRAM – 64 MB | Citrus Video RAM memory module – 64 MB capacity. Physically, VRAM looks just like DRAM with added hardware called a shift register. The special feature of VRAM is that it can transfer one entire row of data (up to 256 bits) into this shift register in a single clock cycle. This ability significantly reduces retrieval time, since the number of fetches is reduced from a possible 256 to a single fetch. The main benefit of having a shift register available for data dumps is that it frees the CPU to refresh the screen rather than retrieve data, thereby doubling the data bandwidth. For this reason, VRAM is often referred to as being dual-ported. However, the shift register will only be used when the VRAM chip is given special instructions to do so. The command to use the shift register is built into the graphics controller. | 14 | 1 | -6 | 102098 | orderable | 279 | 243 | http://www.supp-102098.com/cat/hw/p3091.html |
| 1787 | CPU D300 | Dual CPU @ 300Mhz. For light personal processing only, or file servers with less than 5 concurrent users. This product will probably become obsolete soon. | 15 | 1 | 3 | 102097 | orderable | 101 | 90 | http://www.supp-102097.com/cat/hw/p1787.html |
| 2439 | CPU D400 | Dual CPU @ 400Mhz. Good price/performance ratio; for mid-size LAN file servers (up to 100 concurrent users). | 15 | 1 | 3 | 102092 | orderable | 123 | 105 | http://www.supp-102092.com/cat/hw/p2439.html |
| 1788 | CPU D600 | Dual CPU @ 600Mhz. State of the art, high clock speed; for heavy load WAN servers (up to 200 concurrent users). | 15 | 1 | 5 | 102067 | orderable | 178 | 149 | http://www.supp-102067.com/cat/hw/p1788.html |
| 2375 | GP 1024×768 | Graphics Processor, resolution 1024 X 768 pixels. Outstanding price/performance for 2D and 3D applications under SPNIX v3.3 and v4.0. Double your viewing power by running two monitors from this single card. Two 17 inch monitors have more screen area than one 21 inch monitor. Excellent option for users that multi-task frequently or access data from multiple sources often. | 15 | 1 | -9 | 102063 | orderable | 78 | 69 | http://www.supp-102063.com/cat/hw/p2375.html |
| 2411 | GP 1280×1024 | Graphics Processor, resolution 1280 X 1024 pixels. High end 3D performance at a mid range price: 15 million Gouraud shaded triangles per second, Optimized 3D drivers for MCAD and DCC applications, with user-customizable settings. 64MB DDR SDRAM unified frame buffer supporting true color at all supported standard resolutions. | 15 | 1 | 1 | 102061 | orderable | 98 | 78 | http://www.supp-102061.com/cat/hw/p2411.html |
| 1769 | GP 800×600 | Graphics processor, resolution 800 x 600 pixels. Remarkable value for users requiring great 2D capabilities or general 3D support for advanced applications. Drives incredible performance in highly complex models and frees the customer to focus on the design, instead of the rendering process. | 15 | 1 | -6 | 102050 | orderable | 48 | – | http://www.supp-102050.com/cat/hw/p1769.html |
| 2049 | MB – S300 | PC type motherboard, 300 Series. | 15 | 2 | 1 | 102082 | obsolete | 55 | 47 | http://www.supp-102082.com/cat/hw/p2049.html |
| 2751 | MB – S450 | PC type motherboard, 450 Series. | 15 | 2 | 1 | 102072 | orderable | 66 | 54 | http://www.supp-102072.com/cat/hw/p2751.html |
| 3112 | MB – S500 | PC type motherboard, 500 Series. | 15 | 2 | -5 | 102086 | orderable | 77 | 66 | http://www.supp-102086.com/cat/hw/p3112.html |
| 2752 | MB – S550 | PC type motherboard for the 550 Series. | 15 | 2 | -5 | 102086 | orderable | 88 | 76 | http://www.supp-102086.com/cat/hw/p2752.html |
| 2293 | MB – S600 | Motherboard, 600 Series. | 15 | 2 | 2 | 102086 | orderable | 99 | 87 | http://www.supp-102086.com/cat/hw/p2293.html |
| 3114 | MB – S900/650+ | PC motherboard, 900 Series; standard motherboard for all models 650 and up. | 15 | 3 | 0 | 102086 | under development | 101 | 88 | http://www.supp-102086.com/cat/hw/p3114.html |
| 3129 | Sound Card STD | Sound Card – standard version, with MIDI interface, line in/out, low impedance microphone input. | 15 | 1 | -6 | 102090 | orderable | 46 | 39 | http://www.supp-102090.com/cat/hw/p3129.html |
| 3133 | Video Card /32 | Video Card, with 32MB cache memory. | 15 | 2 | -6 | 102076 | orderable | 48 | 41 | http://www.supp-102076.com/cat/hw/p3133.html |
| 2308 | Video Card /E32 | 3-D ELSA Video Card, with 32 MB memory. | 15 | 2 | -6 | 102087 | orderable | 58 | 48 | http://www.supp-102087.com/cat/hw/p2308.html |
| 2496 | WSP DA-130 | Wide storage processor DA-130 for storage subunits. | 15 | 2 | 0 | 102067 | planned | 299 | 244 | http://www.supp-102067.com/cat/hw/p2496.html |
| 2497 | WSP DA-290 | Wide storage processor (model DA-290). | 15 | 3 | 0 | 102053 | planned | 399 | 355 | http://www.supp-102053.com/cat/hw/p2497.html |
| 3106 | KB 101/EN | Standard PC/AT Enhanced Keyboard (101/102-Key). Input locale: English (US). | 16 | 1 | 1 | 102066 | orderable | 48 | 41 | http://www.supp-102066.com/cat/hw/p3106.html |
| 2289 | KB 101/ES | Standard PC/AT Enhanced Keyboard (101/102-Key). Input locale: Spanish. | 16 | 1 | 1 | 102055 | orderable | 48 | 38 | http://www.supp-102055.com/cat/hw/p2289.html |
| 3110 | KB 101/FR | Standard PC/AT Enhanced Keyboard (101/102-Key). Input locale: French. | 16 | 1 | 1 | 102055 | orderable | 48 | 39 | http://www.supp-102055.com/cat/hw/p3110.html |
| 3108 | KB E/EN | Ergonomic Keyboard with two separate key areas, detachable numeric pad. Key layout: English (US). | 16 | 2 | 2 | 102055 | orderable | 78 | 63 | http://www.supp-102055.com/cat/hw/p3108.html |
| 2058 | Mouse +WP | Combination of a mouse and a wrist pad for more comfortable typing and mouse operation. | 16 | 1 | 1 | 102055 | orderable | 23 | 19 | http://www.supp-102055.com/cat/hw/p2058.html |
| 2761 | Mouse +WP/CL | Set consisting of a mouse and wrist pad, with corporate logo | 16 | 1 | -5 | 102099 | planned | 27 | 23 | http://www.supp-102099.com/cat/hw/p2761.html |
| 3117 | Mouse C/E | Ergonomic, cordless mouse. With track-ball for maximum comfort and ease of use. | 16 | 1 | 1 | 102099 | orderable | 41 | 35 | http://www.supp-102099.com/cat/hw/p3117.html |
| 2056 | Mouse Pad /CL | Standard mouse pad, with corporate logo | 16 | 1 | 1 | 102099 | planned | 8 | 6 | http://www.supp-102099.com/cat/hw/p2056.html |
| 2211 | Wrist Pad | A foam strip to support your wrists when using a keyboard | 16 | 1 | 1 | 102072 | orderable | 4 | 3 | http://www.supp-102072.com/cat/hw/p2211.html |
| 2944 | Wrist Pad /CL | Wrist Pad with corporate logo | 16 | 1 | 1 | 102063 | under development | 3 | 2 | http://www.supp-102063.com/cat/hw/p2944.html |
| 1742 | CD-ROM 500/16x | CD drive, read only, speed 16x, maximum capacity 500 MB. | 17 | 1 | -6 | 102052 | orderable | 101 | 81 | http://www.supp-102052.com/cat/hw/p1742.html |
| 2402 | CD-ROM 600/E/24x | 600 MB external 24x speed CD-ROM drive (read only). | 17 | 2 | -9 | 102052 | orderable | 127 | 113 | http://www.supp-102052.com/cat/hw/p2402.html |
| 2403 | CD-ROM 600/I/24x | 600 MB internal read only CD-ROM drive, reading speed 24x | 17 | 2 | 1 | 102052 | orderable | 117 | 103 | http://www.supp-102052.com/cat/hw/p2403.html |
| 1761 | CD-ROM 600/I/32x | 600 MB Internal CD-ROM Drive, speed 32x (read only). | 17 | 2 | 1 | 102052 | under development | 134 | 119 | http://www.supp-102052.com/cat/hw/p1761.html |
| 2381 | CD-ROM 8x | CD Writer, read only, speed 8x | 17 | 1 | -3 | 102052 | obsolete | 99 | 82 | http://www.supp-102052.com/cat/hw/p2381.html |
| 2424 | CDW 12/24 | CD Writer, speed 12x write, 24x read. Warning: will become obsolete very soon; this speed is not high enough anymore, and better alternatives are available for a reasonable price. | 17 | 2 | -6 | 102075 | orderable | 221 | 198 | http://www.supp-102075.com/cat/hw/p2424.html |
| 1726 | LCD Monitor 11/PM | Liquid Cristal Display 11 inch passive monitor. The virtually-flat, high-resolution screen delivers outstanding image quality with reduced glare. | 11 | 3 | -3 | 102067 | under development | 259 | 208 | http://www.www.supp-102067.com/cat/hw/p1726.html |
| 2359 | LCD Monitor 9/PM | Liquid Cristal Display 9 inch passive monitor. Enjoy the productivity that a small monitor can bring via more workspace on your desk. Easy setup with plug-and-play compatibility. | 11 | 3 | -3 | 102061 | orderable | 249 | 206 | http://www.www.supp-102061.com/cat/hw/p2359.html |
| 3060 | Monitor 17/HR | CRT Monitor 17 inch (16 viewable) high resolution. Exceptional image performance and the benefit of additional screen space. This monitor offers sharp, color-rich monitor performance at an incredible value. With a host of leading features, including on-screen display controls. | 11 | 4 | -6 | 102081 | orderable | 299 | 250 | http://www.supp-102081.com/cat/hw/p3060.html |
| 3051 | Pens – 10/MP | Permanent ink pen dries quickly and is smear resistant. Provides smooth, skip-free writing. Medium point. Single color boxes (black, blue, red) or assorted box (6 black, 3 blue, and 1 red). | 32 | 1 | 0 | 103097 | orderable | 12 | 10 | http://www.supp-103097.com/cat/off/p3051.html |
| 3150 | Card Holder – 25 | Card Holder; heavy plastic business card holder with embossed corporate logo. Holds about 25 of your business cards, depending on card thickness. | 32 | 1 | -6 | 103089 | orderable | 18 | 15 | http://www.supp-103089.com/cat/off/p3150.html |
| 3208 | Pencils – Wood | Box of 2 dozen wooden pencils. Specify lead type when ordering: 2H (double hard), H (hard), HB (hard black), B (soft black). | 32 | 1 | 0 | 103097 | orderable | 2 | 1 | http://www.supp-103097.com/cat/off/p3208.html |
| 3209 | Sharpener – Pencil | Electric Pencil Sharpener Rugged steel cutters for long life. PencilSaver helps prevent over-sharpening. Non-skid rubber feet. Built-in pencil holder. | 32 | 2 | 2 | 103096 | orderable | 13 | 11 | http://www.supp-103096.com/cat/off/p3209.html |
| 3224 | Card Organizer – 250 | Portable holder for organizing business cards, capacity 250. Booklet style with slip in, transparent pockets for business cards. Optional alphabet tabs. Specify cover color when ordering (dark brown, beige, burgundy, black, and light grey). | 32 | 1 | 5 | 103095 | orderable | 32 | 28 | http://www.supp-103095.com/cat/off/p3224.html |
| 3225 | Card Organizer – 1000 | Holder for organizing business cards with alphabet dividers; capacity 1000. Desk top style with smoke grey cover and black base. Lid is removable for storing inside drawer. | 32 | 1 | -2 | 103095 | orderable | 47 | 39 | http://www.supp-103095.com/cat/off/p3225.html |
| 3511 | Paper – HQ Printer | Quality paper for inkjet and laser printers tested to resist printer jams. Acid free for archival purposes. 22lb. weight with brightness of 92. Size: 8 1/2 x 11. Single 500-sheet ream. | 32 | 2 | 0 | 103080 | orderable | 9 | 7 | http://www.supp-103080.com/cat/off/p3511.html |
| 3515 | Lead Replacement | Refill leads for mechanical pencils. Each pack contains 25 leads and a replacement eraser. Available in three lead sizes: .5mm (fine); .7mm (medium); and .9mm (thick). | 32 | 1 | 0 | 103095 | orderable | 2 | 1 | http://www.supp-103095.com/cat/off/p3515.html |
| 2986 | Manual – Vision OS/2x + | Manuals for Vision Operating System V 2.x and Vision Office Suite | 33 | 3 | 0 | 103095 | orderable | 125 | 111 | http://www.supp-103095.com/cat/off/p2986.html |
| 3163 | Manual – Vision Net6.3/US | Vision Networking V6.3 Reference Manual. US version with advanced encryption. | 33 | 2 | 0 | 103083 | orderable | 35 | 29 | http://www.supp-103083.com/cat/off/p3163.html |
| 3165 | Manual – Vision Tools2.0 | Vision Business Tools Suite V2.0 Reference Manual. Includes installation, configuration, and user guide. | 33 | 2 | 0 | 103083 | orderable | 40 | 34 | http://www.supp-103083.com/cat/off/p3165.html |
| 3167 | Manual – Vision OS/2.x | Vision Operating System V2.0/2.1/2/3 Reference Manual. Complete installation, configuration, management, and tuning information for Vision system administration. Note that this manual replaces the individual Version 2.0 and 2.1 manuals. | 33 | 2 | 0 | 103083 | orderable | 55 | 47 | http://www.supp-103083.com/cat/off/p3167.html |
| 3216 | Manual – Vision Net6.3 | Vision Networking V6.3 Reference Manual. Non-US version with basic encryption. | 33 | 2 | 0 | 103083 | orderable | 30 | 26 | http://www.supp-103083.com/cat/off/p3216.html |
| 3220 | Manual – Vision OS/1.2 | Vision Operating System V1.2 Reference Manual. Complete installation, configuration, management, and tuning information for Vision system administration. | 33 | 2 | 0 | 103083 | orderable | 45 | 36 | http://www.supp-103083.com/cat/off/p3220.html |
| 1729 | Chemicals – RCP | Cleaning Chemicals – 3500 roller clean pads | 39 | 2 | 5 | 103094 | orderable | 80 | 66 | http://www.supp-103094.com/cat/off/p1729.html |
| 1910 | FG Stock – H | Fiberglass Stock – heavy duty, 1 thick | 39 | 3 | 0 | 103083 | orderable | 14 | 11 | http://www.supp-103083.com/cat/off/p1910.html |
| 1912 | SS Stock – 3mm | Stainless steel stock – 3mm. Can be predrilled for standard power supplies, motherboard holders, and hard drives. Please use appropriate template to identify model number, placement, and size of finished sheet when placing order for drilled sheet. | 39 | 2 | 0 | 103083 | orderable | 15 | 12 | http://www.supp-103083.com/cat/off/p1912.html |
| 1940 | ESD Bracelet/Clip | Electro static discharge bracelet with alligator clip for easy connection to computer chassis or other ground. | 39 | 1 | -5 | 103095 | orderable | 18 | 14 | http://www.supp-103095.com/cat/off/p1940.html |
| 2030 | Latex Gloves | Latex Gloves for assemblers, chemical handlers, fitters. Heavy duty, safety orange, with textured grip on fingers and thumb. Waterproof and shock-proof up to 220 volts/2 amps, 110 volts/5 amps. Acid proof for up to 5 minutes. | 39 | 1 | 10 | 103097 | orderable | 12 | 10 | http://www.supp-103097.com/cat/off/p2030.html |
| 2326 | Plastic Stock – Y | Plastic Stock – Yellow, standard quality. | 39 | 1 | 0 | 103093 | orderable | 2 | 1 | http://www.supp-103093.com/cat/off/p2326.html |
| 2330 | Plastic Stock – R | Plastic Stock – Red, standard quality. | 39 | 1 | 0 | 103093 | orderable | 2 | 1 | http://www.supp-103093.com/cat/off/p2330.html |
| 2334 | Resin | General purpose synthetic resin. | 39 | 2 | 0 | 103087 | orderable | 4 | 3 | http://www.supp-103087.com/cat/off/p2334.html |
| 2340 | Chemicals – SW | Cleaning Chemicals – 3500 staticide wipes | 39 | 2 | 5 | 103094 | orderable | 72 | 59 | http://www.supp-103094.com/cat/off/p2340.html |
| 2365 | Chemicals – TCS | Cleaning Chemical – 2500 transport cleaning sheets | 39 | 3 | 5 | 103094 | orderable | 78 | 69 | http://www.supp-103094.com/cat/off/p2365.html |
| 2594 | FG Stock – L | Fiberglass Stock – light weight for internal heat shielding, 1/4 thick | 39 | 2 | 0 | 103098 | orderable | 9 | 7 | http://www.supp-103098.com/cat/off/p2594.html |
| 2596 | SS Stock – 1mm | Stainless steel stock – 3mm. Can be predrilled for standard model motherboard and battery holders. Please use appropriate template to identify model number, placement, and size of finished sheet when placing order for drilled sheet. | 39 | 2 | 0 | 103098 | orderable | 12 | 10 | http://www.supp-103098.com/cat/off/p2596.html |
| 2631 | ESD Bracelet/QR | Electro Static Discharge Bracelet: 2 piece lead with quick release connector. One piece stays permanently attached to computer chassis with screw, the other is attached to the bracelet. Additional permanent ends available. | 39 | 1 | -5 | 103085 | orderable | 15 | 12 | http://www.supp-103085.com/cat/off/p2631.html |
| 2721 | PC Bag – L/S | Black Leather Computer Case – single laptop capacity with pockets for manuals, additional hardware, and work papers. Adjustable protective straps and removable pocket for power supply and cables. | 39 | 2 | 1 | 103095 | orderable | 87 | 70 | http://www.supp-103095.com/cat/off/p2721.html |
| 2722 | PC Bag – L/D | Black Leather Computer Case – double laptop capacity with pockets for additional hardware or manuals and work papers. Adjustable protective straps and removable pockets for power supplies and cables. Double wide shoulder strap for comfort. | 39 | 2 | 1 | 103095 | orderable | 112 | 99 | http://www.supp-103095.com/cat/off/p2722.html |
| 2725 | Machine Oil | Machine Oil for Lubrication of CD-ROM drive doors and slides. Self-cleaning adjustable nozzle for fine to medium flow. | 39 | 1 | 0 | 103098 | orderable | 4 | 3 | http://www.supp-103098.com/cat/off/p2725.html |
| 2782 | PC Bag – C/S | Canvas Computer Case – single laptop capacity with pockets for manuals, additional hardware, and work papers. Adjustable protective straps and removable pocket for power supply and cables. Outside pocket with snap closure for easy access while travelling. | 39 | 2 | -6 | 103095 | orderable | 62 | 50 | http://www.supp-103095.com/cat/off/p2782.html |
| 3187 | Plastic Stock – B/HD | Plastic Stock – Blue, high density. | 39 | 1 | 0 | 103095 | orderable | 3 | 2 | http://www.supp-103095.com/cat/off/p3187.html |
| 3189 | Plastic Stock – G | Plastic Stock – Green, standard density. | 39 | 1 | 0 | 103095 | orderable | 2 | 1 | http://www.supp-103095.com/cat/off/p3189.html |
| 3191 | Plastic Stock – O | Plastic Stock – Orange, standard density. | 39 | 1 | 0 | 103095 | orderable | 2 | 1 | http://www.supp-103095.com/cat/off/p3191.html |
| 3193 | Plastic Stock – W/HD | Plastic Stock – White, high density. | 39 | 1 | 0 | 103095 | orderable | 3 | 2 | http://www.supp-103095.com/cat/off/p3193.html |
| 3123 | PS 220V /D | Standard power supply, 220V, for desktop computers. | 19 | 2 | 1 | 102062 | orderable | 81 | 65 | http://www.supp-102062.com/cat/hw/p3123.html |
| 1748 | PS 220V /EUR | 220 Volt Power supply type – Europe | 19 | 2 | 1 | 102053 | orderable | 83 | 70 | http://www.supp-102053.com/cat/hw/p1748.html |
| 2387 | PS 220V /FR | 220V Power supply type – France | 19 | 2 | 1 | 102053 | orderable | 83 | 66 | http://www.supp-102053.com/cat/hw/p2387.html |
| 2370 | PS 220V /HS/FR | 220V hot swappable power supply, for France. | 19 | 2 | -9 | 102053 | orderable | 91 | 75 | http://www.supp-102053.com/cat/hw/p2370.html |
| 2311 | PS 220V /L | Power supply for laptop computers, 220V | 19 | 2 | -9 | 102053 | orderable | 95 | 79 | http://www.supp-102053.com/cat/hw/p2311.html |
| 1733 | PS 220V /UK | 220V Power supply type – United Kingdom | 19 | 2 | -9 | 102080 | orderable | 89 | 76 | http://www.supp-102080.com/cat/hw/p1733.html |
| 2878 | Router – ASR/2W | Special ALS Router – Approved Supplier required item with 2-way match | 19 | 3 | -9 | 102063 | orderable | 345 | 305 | http://www.supp-102063.com/cat/hw/p2878.html |
| 2879 | Router – ASR/3W | Special ALS Router – Approved Supplier required item with 3-way match | 19 | 3 | -9 | 102063 | orderable | 456 | 384 | http://www.supp-102063.com/cat/hw/p2879.html |
| 2152 | Router – DTMF4 | DTMF 4 port router | 19 | 3 | -9 | 102063 | obsolete | 231 | 191 | http://www.supp-102063.com/cat/hw/p2152.html |
| 3301 | Screws <B.28.P> | Screws: Brass, size 28mm, Phillips head. Plastic box, contents 500. | 19 | 2 | 0 | 102071 | orderable | 15 | 12 | http://www.supp-102071.com/cat/hw/p3301.html |
| 3143 | Screws <B.28.S> | Screws: Brass, size 28mm, straight. Plastic box, contents 500. | 19 | 2 | 0 | 102071 | orderable | 16 | 13 | http://www.supp-102071.com/cat/hw/p3143.html |
| 2323 | Screws <B.32.P> | Screws: Brass, size 32mm, Phillips head. Plastic box, contents 400. | 19 | 3 | 0 | 102071 | orderable | 18 | 14 | http://www.supp-102071.com/cat/hw/p2323.html |
| 3134 | Screws <B.32.S> | Screws: Brass, size 32mm, straight. Plastic box, contents 400. | 19 | 3 | 0 | 102071 | orderable | 18 | 15 | http://www.supp-102071.com/cat/hw/p3134.html |
| 3139 | Screws <S.16.S> | Screws: Steel, size 16 mm, straight. Carton box, contents 750. | 19 | 2 | 0 | 102071 | orderable | 21 | 17 | http://www.supp-102071.com/cat/hw/p3139.html |
| 3300 | Screws <S.32.P> | Screws: Steel, size 32mm, Phillips head. Plastic box, contents 400. | 19 | 3 | 0 | 102071 | orderable | 23 | 19 | http://www.supp-102071.com/cat/hw/p3300.html |
| 2316 | Screws <S.32.S> | Screws: Steel, size 32mm, straight. Plastic box, contents 500. | 19 | 3 | 0 | 102074 | orderable | 22 | 19 | http://www.supp-102074.com/cat/hw/p2316.html |
| 3140 | Screws <Z.16.S> | Screws: Zinc, length 16mm, straight. Carton box, contents 750. | 19 | 2 | 0 | 102074 | orderable | 24 | 19 | http://www.supp-102074.com/cat/hw/p3140.html |
| 2319 | Screws <Z.24.S> | Screws: Zinc, size 24mm, straight. Carton box, contents 500. | 19 | 2 | 0 | 102074 | orderable | 25 | 21 | http://www.supp-102074.com/cat/hw/p2319.html |
| 2322 | Screws <Z.28.P> | Screws: Zinc, size 28 mm, Phillips head. Carton box, contents 850. | 19 | 2 | 0 | 102076 | orderable | 23 | 18 | http://www.supp-102076.com/cat/hw/p2322.html |
| 3178 | Spreadsheet – SSP/V 2.0 | SmartSpread Spreadsheet, Professional Edition Version 2.0, for Vision Release 11.1 and 11.2. Shrink wrap includes CD-ROM containing advanced software and online documentation, plus printed manual, tutorial, and license registration. | 21 | 2 | -1 | 103080 | orderable | 45 | 37 | http://www.supp-103080.com/cat/sw/p3178.html |
| 3179 | Spreadsheet – SSS/S 2.1 | SmartSpread Spreadsheet, Standard Edition Version 2.1, for SPNIX Release 4.0. Shrink wrap includes CD-ROM containing software and online documentation, plus printed manual and license registration. | 21 | 2 | -1 | 103080 | orderable | 50 | 44 | http://www.supp-103080.com/cat/sw/p3179.html |
| 3182 | Word Processing – SWP/V 4.5 | SmartWord Word Processor, Professional Edition Version 4.5, for Vision Release 11.x. Shrink wrap includes CD-ROM, containing advanced software, printed manual, and license registration. | 22 | 2 | -3 | 103093 | orderable | 65 | 54 | http://www.supp-103093.com/cat/sw/p3182.html |
| 3183 | Word Processing – SWS/V 4.5 | SmartWord Word Processor, Standard Edition Version 4.5, for Vision Release 11.x. Shrink wrap includes CD-ROM and license registration. | 22 | 2 | -1 | 103093 | orderable | 50 | 40 | http://www.supp-103093.com/cat/sw/p3183.html |
| 3197 | Spreadsheet – SSS/V 2.1 | SmartSpread Spreadsheet, Standard Edition Version 2.1, for Vision Release 11.1 and 11.2. Shrink wrap includes CD-ROM containing software and online documentation, plus printed manual, tutorial, and license registration. | 21 | 2 | -1 | 103080 | orderable | 45 | 36 | http://www.supp-103080.com/cat/sw/p3197.html |
| 3255 | Spreadsheet – SSS/CD 2.2B | SmartSpread Spreadsheet, Standard Edition, Beta Version 2.2, for SPNIX Release 4.1. CD-ROM only. | 21 | 1 | -1 | 103080 | orderable | 35 | 30 | http://www.supp-103080.com/cat/sw/p3255.html |
| 3256 | Spreadsheet – SSS/V 2.0 | SmartSpread Spreadsheet, Standard Edition Version 2.0, for Vision Release 11.0. Shrink wrap includes CD-ROM containing software and online documentation, plus printed manual, tutorial, and license registration. | 21 | 2 | -1 | 103080 | orderable | 40 | 34 | http://www.supp-103080.com/cat/sw/p3256.html |
| 3260 | Word Processing – SWP/S 4.4 | SmartSpread Spreadsheet, Standard Edition Version 2.2, for SPNIX Release 4.x. Shrink wrap includes CD-ROM, containing software, plus printed manual and license registration. | 22 | 2 | -1 | 103093 | orderable | 50 | 41 | http://www.supp-103093.com/cat/sw/p3260.html |
| 3262 | Spreadsheet – SSS/S 2.2 | SmartSpread Spreadsheet, Standard Edition Version 2.2, for SPNIX Release 4.1. Shrink wrap includes CD-ROM containing software and online documentation, plus printed manual and license registration. | 21 | 2 | -1 | 103080 | under development | 50 | 41 | http://www.supp-103080.com/cat/sw/p3262.html |
| 3361 | Spreadsheet – SSP/S 1.5 | SmartSpread Spreadsheet, Standard Edition Version 1.5, for SPNIX Release 3.3. Shrink wrap includes CD-ROM containing advanced software and online documentation, plus printed manual, tutorial, and license registration. | 21 | 2 | -1 | 103080 | orderable | 40 | 34 | http://www.supp-103080.com/cat/sw/p3361.html |
| 1799 | SPNIX3.3 – SL | Operating System Software: SPNIX V3.3 – Base Server License. Includes 10 general licenses for system administration, developers, or users. No network user licensing. | 24 | 1 | 1 | 103092 | orderable | 1000 | 874 | http://www.supp-103092.com/cat/sw/p1799.html |
| 1801 | SPNIX3.3 – AL | Operating System Software: SPNIX V3.3 – Additional system administrator license, including network access. | 24 | 1 | 1 | 103092 | orderable | 100 | 88 | http://www.supp-103092.com/cat/sw/p1801.html |
| 1803 | SPNIX3.3 – DL | Operating System Software: SPNIX V3.3 – Additional developer license. | 24 | 1 | 1 | 103092 | orderable | 60 | 51 | http://www.supp-103092.com/cat/sw/p1803.html |
| 1804 | SPNIX3.3 – UL/N | Operating System Software: SPNIX V3.3 – Additional user license with network access. | 24 | 1 | 1 | 103092 | orderable | 65 | 56 | http://www.supp-103092.com/cat/sw/p1804.html |
| 1805 | SPNIX3.3 – UL/A | Operating System Software: SPNIX V3.3 – Additional user license class A. | 24 | 1 | 1 | 103092 | orderable | 50 | 42 | http://www.supp-103092.com/cat/sw/p1805.html |
| 1806 | SPNIX3.3 – UL/C | Operating System Software: SPNIX V3.3 – Additional user license class C. | 24 | 1 | 1 | 103092 | orderable | 50 | 42 | http://www.supp-103092.com/cat/sw/p1806.html |
| 1808 | SPNIX3.3 – UL/D | Operating System Software: SPNIX V3.3 – Additional user license class D. | 24 | 1 | 1 | 103092 | orderable | 55 | 46 | http://www.supp-103092.com/cat/sw/p1808.html |
| 1820 | SPNIX3.3 – NL | Operating System Software: SPNIX V3.3 – Additional network access license. | 24 | 1 | 1 | 103092 | orderable | 55 | 45 | http://www.supp-103092.com/cat/sw/p1820.html |
| 1822 | SPNIX4.0 – SL | Operating System Software: SPNIX V4.0 – Base Server License. Includes 10 general licenses for system administration, developers, or users. No network user licensing. | 24 | 1 | 1 | 103092 | orderable | 1500 | 1303 | http://www.supp-103092.com/cat/sw/p1822.html |
| 2422 | SPNIX4.0 – SAL | Operating System Software: SPNIX V4.0 – Additional system administrator license, including network access. | 24 | 1 | 1 | 103092 | orderable | 150 | 130 | http://www.supp-103092.com/cat/sw/p2422.html |
| 2452 | SPNIX4.0 – DL | Operating System Software: SPNIX V4.0 – Additional developer license. | 24 | 1 | 1 | 103092 | orderable | 100 | 88 | http://www.supp-103092.com/cat/sw/p2452.html |
| 2462 | SPNIX4.0 – UL/N | Operating System Software: SPNIX V4.0 – Additional user license with network access. | 24 | 1 | 1 | 103092 | orderable | 80 | 71 | http://www.supp-103092.com/cat/sw/p2462.html |
| 2464 | SPNIX4.0 – UL/A | Operating System Software: SPNIX V4.0 – Additional user license class A. | 24 | 1 | 1 | 103092 | orderable | 70 | 62 | http://www.supp-103092.com/cat/sw/p2464.html |
| 2467 | SPNIX4.0 – UL/D | Operating System Software: SPNIX V4.0 – Additional user license class D. | 24 | 1 | 1 | 103092 | orderable | 80 | 64 | http://www.supp-103092.com/cat/sw/p2467.html |
| 2468 | SPNIX4.0 – UL/C | Operating System Software: SPNIX V4.0 – Additional user license class C. | 24 | 1 | 1 | 103092 | orderable | 75 | 67 | http://www.supp-103092.com/cat/sw/p2468.html |
| 2470 | SPNIX4.0 – NL | Operating System Software: SPNIX V4.0 – Additional network access license. | 24 | 1 | 1 | 103092 | orderable | 80 | 70 | http://www.supp-103092.com/cat/sw/p2470.html |
| 2471 | SPNIX3.3 SU | Operating System Software: SPNIX V3.3 – Base Server License Upgrade to V4.0. | 24 | 1 | 1 | 103092 | orderable | 500 | 439 | http://www.supp-103092.com/cat/sw/p2471.html |
| 2492 | SPNIX3.3 AU | Operating System Software: SPNIX V3.3 – V4.0 upgrade; class A user. | 24 | 1 | 1 | 103092 | orderable | 45 | 38 | http://www.supp-103092.com/cat/sw/p2492.html |
| 2493 | SPNIX3.3 C/DU | Operating System Software: SPNIX V3.3 – V4.0 upgrade; class C or D user. | 24 | 1 | 1 | 103092 | orderable | 25 | 22 | http://www.supp-103092.com/cat/sw/p2493.html |
| 2494 | SPNIX3.3 NU | Operating System Software: SPNIX V3.3 – V4.0 upgrade; network access license. | 24 | 1 | 1 | 103092 | orderable | 25 | 20 | http://www.supp-103092.com/cat/sw/p2494.html |
| 2995 | SPNIX3.3 SAU | Operating System Software: SPNIX V3.3 – V4.0 upgrade; system administrator license. | 24 | 1 | 1 | 103092 | orderable | 70 | 62 | http://www.supp-103092.com/cat/sw/p2995.html |
| 3290 | SPNIX3.3 DU | Operating System Software: SPNIX V3.3 – V4.0 upgrade; developer license. | 24 | 1 | 1 | 103092 | orderable | 65 | 55 | http://www.supp-103092.com/cat/sw/p3290.html |
| 1778 | C for SPNIX3.3 – 1 Seat | C programming software for SPNIX V3.3 – single user | 25 | 1 | -6 | 103092 | orderable | 62 | 52 | http://www.supp-103092.com/cat/sw/p1778.html |
| 1779 | C for SPNIX3.3 – Doc | C programming language documentation, SPNIX V3.3 | 25 | 2 | 10 | 103092 | orderable | 128 | 112 | http://www.supp-103092.com/cat/sw/p1779.html |
| 1780 | C for SPNIX3.3 – Sys | C programming software for SPNIX V3.3 – system compiler, libraries, linker | 25 | 1 | -6 | 103092 | orderable | 450 | 385 | http://www.supp-103092.com/cat/sw/p1780.html |
| 2371 | C for SPNIX4.0 – Doc | C programming language documentation, SPNIX V4.0 | 25 | 2 | 10 | 103092 | orderable | 146 | 119 | http://www.supp-103092.com/cat/sw/p2371.html |
| 2423 | C for SPNIX4.0 – 1 Seat | C programming software for SPNIX V4.0 – single user | 25 | 1 | -6 | 103092 | orderable | 84 | 73 | http://www.supp-103092.com/cat/sw/p2423.html |
| 3501 | C for SPNIX4.0 – Sys | C programming software for SPNIX V4.0 – system compiler, libraries, linker | 25 | 1 | -6 | 103092 | orderable | 555 | 448 | http://www.supp-103092.com/cat/sw/p3501.html |
| 3502 | C for SPNIX3.3 -Sys/U | C programming software for SPNIX V3.3 – 4.0 Upgrade; system compiler, libraries, linker | 25 | 1 | -6 | 103092 | orderable | 105 | 88 | http://www.supp-103092.com/cat/sw/p3502.html |
| 3503 | C for SPNIX3.3 – Seat/U | C programming software for SPNIX V3.3 – 4.0 Upgrade – single user | 25 | 1 | -6 | 103092 | orderable | 22 | 18 | http://www.supp-103092.com/cat/sw/p3503.html |
| 1774 | Base ISO CP – BL | Base ISO Communication Package – Base License | 29 | 1 | 0 | 103088 | orderable | 110 | 93 | http://www.supp-103088.com/cat/sw/p1774.html |
| 1775 | Client ISO CP – S | ISO Communication Package add-on license for additional SPNIX V3.3 client. | 29 | 1 | 0 | 103087 | orderable | 27 | 22 | http://www.supp-103087.com/cat/sw/p1775.html |
| 1794 | OSI 8-16/IL | OSI Layer 8 to 16 – Incremental License | 29 | 1 | 0 | 103096 | orderable | 128 | 112 | http://www.supp-103096.com/cat/sw/p1794.html |
| 1825 | X25 – 1 Line License | X25 network access control system, single user | 29 | 1 | -6 | 103093 | orderable | 25 | 21 | http://www.supp-103093.com/cat/sw/p1825.html |
| 2004 | IC Browser – S | IC Web Browser for SPNIX. Browser with network mail capability. | 29 | 1 | -1 | 103086 | orderable | 90 | 80 | http://www.supp-103086.com/cat/sw/p2004.html |
| 2005 | IC Browser Doc – S | Documentation set for IC Web Browser for SPNIX. Includes Installation Manual, Mail Server Administration Guide, and User Quick Reference. | 29 | 2 | 0 | 103086 | orderable | 115 | 100 | http://www.supp-103086.com/cat/sw/p2005.html |
| 2416 | Client ISO CP – S | ISO Communication Package add-on license for additional SPNIX V4.0 client. | 29 | 1 | 0 | 103088 | orderable | 41 | 36 | http://www.supp-103088.com/cat/sw/p2416.html |
| 2417 | Client ISO CP – V | ISO Communication Package add-on license for additional Vision client. | 29 | 1 | 0 | 103088 | orderable | 33 | 27 | http://www.supp-103088.com/cat/sw/p2417.html |
| 2449 | OSI 1-4/IL | OSI Layer 1 to 4 – Incremental License | 29 | 1 | 0 | 103088 | orderable | 83 | 72 | http://www.supp-103088.com/cat/sw/p2449.html |
| 3101 | IC Browser – V | IC Web Browser for Vision with manual. Browser with network mail capability. | 29 | 2 | -1 | 103086 | orderable | 75 | 67 | http://www.supp-103086.com/cat/sw/p3101.html |
| 3170 | Smart Suite – V/SP | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for Vision. Spanish language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 161 | 132 | http://www.supp-103089.com/cat/sw/p3170.html |
| 3171 | Smart Suite – S3.3/EN | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for SPNIX Version 3.3. English language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 148 | 120 | http://www.supp-103089.com/cat/sw/p3171.html |
| 3172 | Graphics – DIK+ | Software Kit Graphics: Draw-It Kwik-Plus. Includes extensive clip art files and advanced drawing tools for 3-D object manipulation, variable shading, and extended character fonts. | 29 | 1 | -1 | 103094 | orderable | 42 | 34 | http://www.supp-103094.com/cat/sw/p3172.html |
| 3173 | Graphics – SA | Software Kit Graphics: SmartArt. Professional graphics package for SPNIX with multiple line styles, textures, built-in shapes and common symbols. | 29 | 1 | -1 | 103094 | orderable | 86 | 72 | http://www.supp-103094.com/cat/sw/p3173.html |
| 3175 | Project Management – S4.0 | Project Management Software, for SPNIX V4.0. Software includes command line and graphical interface with text, graphic, spreadsheet, and customizable report formats. | 29 | 1 | -1 | 103089 | orderable | 37 | 32 | http://www.supp-103089.com/cat/sw/p3175.html |
| 3176 | Smart Suite – V/EN | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for Vision. English language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 120 | 103 | http://www.supp-103089.com/cat/sw/p3176.html |
| 3177 | Smart Suite – V/FR | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for Vision. French language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 120 | 102 | http://www.supp-103089.com/cat/sw/p3177.html |
| 3245 | Smart Suite – S4.0/FR | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for SPNIX V4.0. French language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 222 | 195 | http://www.supp-103089.com/cat/sw/p3245.html |
| 3246 | Smart Suite – S4.0/SP | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for SPNIX V4.0. Spanish language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 222 | 193 | http://www.supp-103089.com/cat/sw/p3246.html |
| 3247 | Smart Suite – V/DE | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for Vision. German language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 120 | 96 | http://www.supp-103089.com/cat/sw/p3247.html |
| 3248 | Smart Suite – S4.0/DE | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for SPNIX V4.0. German language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 222 | 193 | http://www.supp-103089.com/cat/sw/p3248.html |
| 3250 | Graphics – DIK | Software Kit Graphics: Draw-It Kwik. Simple graphics package for Vision systems, with options to save in GIF, JPG, and BMP formats. | 29 | 1 | -1 | 103083 | orderable | 28 | 24 | http://www.supp-103083.com/cat/sw/p3250.html |
| 3251 | Project Management – V | Project Management Software, for Vision. Software includes command line and graphical interface with text, graphic, spreadsheet, and customizable report formats. | 29 | 1 | -1 | 103093 | orderable | 31 | 26 | http://www.supp-103093.com/cat/sw/p3251.html |
| 3252 | Project Management – S3.3 | Project Management Software, for SPNIX V3.3. Software includes command line and graphical interface with text, graphic, spreadsheet, and customizable report formats. | 29 | 1 | -1 | 103093 | orderable | 26 | 23 | http://www.supp-103093.com/cat/sw/p3252.html |
| 3253 | Smart Suite – S4.0/EN | Office Suite (SmartWrite, SmartArt, SmartSpread, SmartBrowse) for SPNIX V4.0. English language software and user manuals. | 29 | 2 | -6 | 103089 | orderable | 222 | 188 | http://www.supp-103089.com/cat/sw/p3253.html |
| 3257 | Web Browser – SB/S 2.1 | Software Kit Web Browser: SmartBrowse V2.1 for SPNIX V3.3. Includes context sensitive help files and online documentation. | 29 | 1 | -1 | 103082 | orderable | 66 | 58 | http://www.supp-103082.com/cat/sw/p3257.html |
| 3258 | Web Browser – SB/V 1.0 | Software Kit Web Browser: SmartBrowse V2.1 for Vision. Includes context sensitive help files and online documentation. | 29 | 1 | -1 | 103082 | orderable | 80 | 70 | http://www.supp-103082.com/cat/sw/p3258.html |
| 3362 | Web Browser – SB/S 4.0 | Software Kit Web Browser: SmartBrowse V4.0 for SPNIX V4.0. Includes context sensitive help files and online documentation. | 29 | 1 | -1 | 103082 | orderable | 99 | 81 | http://www.supp-103082.com/cat/sw/p3362.html |
| 2231 | Desk – S/V | Standard-sized desk; capitalizable, taxable item. Final finish is from veneer in stock at time of order, including oak, ash, cherry, and mahogany. | 31 | 5 | 15 | 103082 | orderable | 2510 | 2114 | http://www.supp-103082.com/cat/off/p2231.html |
| 2335 | Mobile phone | Dual band mobile phone with low battery consumption. Lightweight, foldable, with socket for single earphone and spare battery compartment. | 31 | 1 | -5 | 103088 | orderable | 100 | 83 | http://www.supp-103088.com/cat/off/p2335.html |
| 2350 | Desk – W/48 | Desk – 48 inch white laminate without return; capitalizable, taxable item. | 31 | 5 | 20 | 103082 | orderable | 2500 | 2129 | http://www.supp-103082.com/cat/off/p2350.html |
| 2351 | Desk – W/48/R | Desk – 60 inch white laminate with 48 inch return; capitalizable, taxable item. | 31 | 5 | 20 | 103082 | orderable | 2900 | 2386 | http://www.supp-103082.com/cat/off/p2351.html |
| 2779 | Desk – OS/O/F | Executive-style oversized oak desk with file drawers. Final finish is customizable when ordered, light or dark oak stain, or natural hand rubbed clear. | 31 | 5 | 25 | 103082 | orderable | 3980 | 3347 | http://www.supp-103082.com/cat/off/p2779.html |
| 3337 | Mobile Web Phone | Mobile phone including monthly fee for Web access. Slimline shape with leather-look carrying case and belt clip. | 31 | 2 | -5 | 103088 | orderable | 800 | 666 | http://www.supp-103088.com/cat/off/p3337.html |
| 2091 | Paper Tablet LW 8 1/2 x 11 | Paper tablet, lined, white, size 8 1/2 x 11 inch | 32 | 1 | 0 | 103095 | orderable | 1 | 0 | http://www.supp-103095.com/cat/off/p2091.html |
| 2093 | Pens – 10/FP | Permanent ink pen dries quickly and is smear resistant. Provides smooth, skip-free writing. Fine point. Single color boxes (black, blue, red) or assorted box (6 black, 3 blue, and 1 red). | 32 | 1 | 0 | 103090 | orderable | 8 | 7 | http://www.supp-103090.com/cat/off/p2093.html |
| 2144 | Card Organizer Cover | Replacement cover for desk top style business card holder. Smoke grey (original color) or clear plastic. | 32 | 1 | -1 | 103094 | orderable | 18 | 14 | http://www.supp-103094.com/cat/off/p2144.html |
| 2336 | Business Cards Box – 250 | Business cards box, capacity 250. Use form BC110-2, Rev. 3/2000 (hardcopy or online) when ordering and complete all fields marked with an asterisk. | 32 | 1 | 0 | 103091 | orderable | 55 | 49 | http://www.supp-103091.com/cat/off/p2336.html |
| 2337 | Business Cards – 1000/2L | Business cards box, capacity 1000, 2-sided with different language on each side. Use form BC111-2, Rev. 12/1999 (hardcopy or online) when ordering – complete all fields marked with an asterisk and check box for second language (English is always on side 1). | 32 | 1 | 0 | 103091 | orderable | 300 | 246 | http://www.supp-103091.com/cat/off/p2337.html |
| 2339 | Paper – Std Printer | 20 lb. 8.5×11 inch white laser printer paper (recycled), ten 500-sheet reams | 32 | 3 | 0 | 103095 | orderable | 25 | 21 | http://www.supp-103095.com/cat/off/p2339.html |
| 2536 | Business Cards – 250/2L | Business cards box, capacity 250, 2-sided with different language on each side. Use form BC111-2, Rev. 12/1999 (hardcopy or online) when ordering – complete all fields marked with an asterisk and check box for second language (English is always on side 1). | 32 | 1 | 0 | 103091 | orderable | 80 | 68 | http://www.supp-103091.com/cat/off/p2536.html |
| 2537 | Business Cards Box – 1000 | Business cards box, capacity 1000. Use form BC110-3, Rev. 3/2000 (hardcopy or online) when ordering and complete all fields marked with an asterisk. | 32 | 1 | 0 | 103091 | orderable | 200 | 176 | http://www.supp-103091.com/cat/off/p2537.html |
| 2783 | Clips – Paper | World brand paper clips set the standard for quality.10 boxes with 100 clips each. #1 regular or jumbo, smooth or non-skid. | 32 | 2 | 0 | 103080 | orderable | 10 | 8 | http://www.supp-103080.com/cat/off/p2783.html |
| 2808 | Paper Tablet LY 8 1/2 x 11 | Paper Tablet, Lined, Yellow, size 8 1/2 x 11 inch | 32 | 1 | 0 | 103098 | orderable | 1 | 0 | http://www.supp-103098.com/cat/off/p2808.html |
oe.orders
For each order placed by a customer, various attributes are captured. There is one row per order.
| order_id | order_date | order_mode | customer_id | order_status | order_total | sales_rep_id | promotion_id |
|---|---|---|---|---|---|---|---|
| 2458 | 16-AUG-07 03.34.12.234359 PM | direct | 101 | 0 | 78279.6 | 153 | – |
| 2397 | 19-NOV-07 02.41.54.696211 PM | direct | 102 | 1 | 42283.2 | 154 | – |
| 2454 | 02-OCT-07 05.49.34.678340 PM | direct | 103 | 1 | 6653.4 | 154 | – |
| 2354 | 14-JUL-08 06.18.23.234567 PM | direct | 104 | 0 | 46257 | 155 | – |
| 2358 | 08-JAN-08 05.03.12.654278 PM | direct | 105 | 2 | 7826 | 155 | – |
| 2381 | 14-MAY-08 08.59.08.843679 PM | direct | 106 | 3 | 23034.6 | 156 | – |
| 2440 | 31-AUG-07 09.53.06.008765 PM | direct | 107 | 3 | 70576.9 | 156 | – |
| 2357 | 08-JAN-06 08.19.44.123456 PM | direct | 108 | 5 | 59872.4 | 158 | – |
| 2394 | 10-FEB-08 09.22.35.564789 PM | direct | 109 | 5 | 21863 | 158 | – |
| 2435 | 02-SEP-07 11.22.53.134567 PM | direct | 144 | 6 | 62303 | 159 | – |
| 2455 | 20-SEP-07 11.34.11.456789 AM | direct | 145 | 7 | 14087.5 | 160 | – |
| 2379 | 16-MAY-07 02.22.24.234567 AM | direct | 146 | 8 | 17848.2 | 161 | – |
| 2396 | 02-FEB-06 01.34.56.345678 AM | direct | 147 | 8 | 34930 | 161 | – |
| 2406 | 29-JUN-07 04.41.20.098765 AM | direct | 148 | 8 | 2854.2 | 161 | – |
| 2434 | 13-SEP-07 05.49.30.647893 AM | direct | 149 | 8 | 268651.8 | 161 | – |
| 2436 | 02-SEP-07 06.18.04.378034 AM | direct | 116 | 8 | 6394.8 | 161 | – |
| 2446 | 27-JUL-07 07.03.08.302945 AM | direct | 117 | 8 | 103679.3 | 161 | – |
| 2447 | 27-JUL-08 08.59.10.223344 AM | direct | 101 | 8 | 33893.6 | 161 | – |
| 2432 | 14-SEP-07 09.53.40.223345 AM | direct | 102 | 10 | 10523 | 163 | – |
| 2433 | 13-SEP-07 10.19.00.654279 AM | direct | 103 | 10 | 78 | 163 | – |
| 2355 | 26-JAN-06 09.22.51.962632 AM | online | 104 | 8 | 94513.5 | – | – |
| 2356 | 26-JAN-08 09.22.41.934562 AM | online | 105 | 5 | 29473.8 | – | – |
| 2359 | 08-JAN-06 09.34.13.112233 PM | online | 106 | 9 | 5543.1 | – | – |
| 2360 | 14-NOV-07 12.22.31.223344 PM | online | 107 | 4 | 990.4 | – | – |
| 2361 | 13-NOV-07 01.34.21.986210 PM | online | 108 | 8 | 120131.3 | – | – |
| 2362 | 13-NOV-07 02.41.10.619477 PM | online | 109 | 4 | 92829.4 | – | – |
| 2363 | 23-OCT-07 05.49.56.346122 PM | online | 144 | 0 | 10082.3 | – | – |
| 2364 | 28-AUG-07 06.18.45.942399 PM | online | 145 | 4 | 9500 | – | – |
| 2365 | 28-AUG-07 07.03.34.003399 PM | online | 146 | 9 | 27455.3 | – | – |
| 2366 | 28-AUG-07 08.59.23.144778 PM | online | 147 | 5 | 37319.4 | – | – |
| 2367 | 27-JUN-08 09.53.32.335522 PM | online | 148 | 10 | 144054.8 | – | – |
| 2368 | 26-JUN-08 10.19.43.190089 PM | online | 149 | 10 | 60065 | – | – |
| 2369 | 26-JUN-07 11.22.54.009932 PM | online | 116 | 0 | 11097.4 | – | – |
| 2370 | 27-JUN-08 12.22.11.647398 AM | online | 117 | 4 | 126 | – | – |
| 2371 | 16-MAY-07 01.34.56.113356 AM | online | 118 | 6 | 79405.6 | – | – |
| 2372 | 27-FEB-07 12.22.33.356789 AM | online | 119 | 9 | 16447.2 | – | – |
| 2373 | 27-FEB-08 01.34.51.220065 AM | online | 120 | 4 | 416 | – | – |
| 2374 | 27-FEB-08 02.41.45.109654 AM | online | 121 | 0 | 4797 | – | – |
| 2375 | 26-FEB-07 03.49.50.459233 AM | online | 122 | 2 | 103834.4 | – | – |
| 2376 | 07-JUN-07 06.18.08.883310 AM | online | 123 | 6 | 11006.2 | – | – |
| 2377 | 07-JUN-07 07.03.01.001100 AM | online | 141 | 5 | 38017.8 | – | – |
| 2378 | 24-MAY-07 08.59.10.010101 AM | online | 142 | 5 | 25691.3 | – | – |
| 2380 | 16-MAY-07 09.53.02.909090 AM | online | 143 | 3 | 27132.6 | – | – |
| 2382 | 14-MAY-08 10.19.03.828321 AM | online | 144 | 8 | 71173 | – | – |
| 2383 | 12-MAY-08 11.22.30.545103 AM | online | 145 | 8 | 36374.7 | – | – |
| 2384 | 12-MAY-08 12.22.34.525972 PM | online | 146 | 3 | 29249.1 | – | – |
| 2385 | 08-DEC-07 11.34.11.331392 AM | online | 147 | 4 | 295892 | – | – |
| 2386 | 06-DEC-07 12.22.34.225609 PM | online | 148 | 10 | 21116.9 | – | – |
| 2387 | 11-MAR-07 03.34.56.536966 PM | online | 149 | 5 | 52758.9 | – | – |
| 2388 | 04-JUN-07 04.41.12.554435 PM | online | 150 | 4 | 282694.3 | – | – |
| 2389 | 04-JUN-08 05.49.43.546954 PM | online | 151 | 4 | 17620 | – | – |
| 2390 | 18-NOV-07 04.18.50.546851 PM | online | 152 | 9 | 7616.8 | – | – |
| 2391 | 27-FEB-06 05.03.03.828330 PM | direct | 153 | 2 | 48070.6 | 156 | – |
| 2392 | 21-JUL-07 08.59.57.571057 PM | direct | 154 | 9 | 26632 | 161 | – |
| 2393 | 10-FEB-08 07.53.19.528202 PM | direct | 155 | 4 | 23431.9 | 161 | – |
| 2395 | 02-FEB-06 08.19.11.227550 PM | direct | 156 | 3 | 68501 | 163 | – |
| 2398 | 19-NOV-07 09.22.53.224175 PM | direct | 157 | 9 | 7110.3 | 163 | – |
| 2399 | 19-NOV-07 10.22.38.340990 PM | direct | 158 | 0 | 25270.3 | 161 | – |
| 2400 | 10-JUL-07 01.34.29.559387 AM | direct | 159 | 2 | 69286.4 | 161 | – |
| 2401 | 10-JUL-07 02.22.53.554822 AM | direct | 160 | 3 | 969.2 | 163 | – |
| 2402 | 02-JUL-07 03.34.44.665170 AM | direct | 161 | 8 | 600 | 154 | – |
| 2403 | 01-JUL-07 04.49.13.615512 PM | direct | 162 | 0 | 220 | 154 | – |
| 2404 | 01-JUL-07 04.49.13.664085 PM | direct | 163 | 6 | 510 | 158 | – |
| 2405 | 01-JUL-07 04.49.13.678123 PM | direct | 164 | 5 | 1233 | 159 | – |
| 2407 | 29-JUN-07 07.03.21.526005 AM | direct | 165 | 9 | 2519 | 155 | – |
| 2408 | 29-JUN-07 08.59.31.333617 AM | direct | 166 | 1 | 309 | 158 | – |
| 2409 | 29-JUN-07 09.53.41.984501 AM | direct | 167 | 2 | 48 | 154 | – |
| 2410 | 24-MAY-08 10.19.51.985501 AM | direct | 168 | 6 | 45175 | 156 | – |
| 2411 | 24-MAY-07 11.22.10.548639 AM | direct | 169 | 8 | 15760.5 | 156 | – |
| 2412 | 29-MAR-06 10.22.09.509801 AM | direct | 170 | 9 | 66816 | 158 | – |
| 2413 | 29-MAR-08 01.34.04.525934 PM | direct | 101 | 5 | 48552 | 161 | – |
| 2414 | 29-MAR-07 02.22.40.536996 PM | direct | 102 | 8 | 10794.6 | 153 | – |
| 2415 | 29-MAR-06 01.34.50.545196 PM | direct | 103 | 6 | 310 | 161 | – |
| 2416 | 29-MAR-07 04.41.20.945676 PM | direct | 104 | 6 | 384 | 160 | – |
| 2417 | 20-MAR-07 05.49.10.974352 PM | direct | 105 | 5 | 1926.6 | 163 | – |
| 2418 | 20-MAR-04 04.18.21.862632 PM | direct | 106 | 4 | 5546.6 | 163 | – |
| 2419 | 20-MAR-07 07.03.32.764632 PM | direct | 107 | 3 | 31574 | 160 | – |
| 2420 | 13-MAR-07 08.59.43.666320 PM | direct | 108 | 2 | 29750 | 160 | – |
| 2421 | 12-MAR-07 09.53.54.562432 PM | direct | 109 | 1 | 72836 | – | – |
| 2422 | 16-DEC-07 08.19.55.462332 PM | direct | 144 | 2 | 11188.5 | 153 | – |
| 2423 | 21-NOV-07 10.22.33.362632 AM | direct | 145 | 3 | 10367.7 | 160 | – |
| 2424 | 21-NOV-07 10.22.33.263332 AM | direct | 146 | 4 | 13824 | 153 | – |
| 2425 | 16-NOV-06 11.34.22.162552 PM | direct | 147 | 5 | 1500.8 | 163 | – |
| 2426 | 17-NOV-06 12.22.11.262552 AM | direct | 148 | 6 | 7200 | – | – |
| 2427 | 10-NOV-07 01.34.22.362124 AM | direct | 149 | 7 | 9055 | 163 | – |
| 2428 | 10-NOV-07 02.41.34.463567 AM | direct | 116 | 8 | 14685.8 | – | – |
| 2429 | 10-NOV-07 03.49.25.526321 AM | direct | 117 | 9 | 50125 | 154 | – |
| 2430 | 02-OCT-07 06.18.36.663332 AM | direct | 101 | 8 | 29669.9 | 159 | – |
| 2431 | 14-SEP-06 07.03.04.763452 AM | direct | 102 | 1 | 5610.6 | 163 | – |
| 2437 | 01-SEP-06 08.59.15.826132 AM | direct | 103 | 4 | 13550 | 163 | – |
| 2438 | 01-SEP-07 09.53.26.934626 AM | direct | 104 | 0 | 5451 | 154 | – |
| 2439 | 31-AUG-07 10.19.37.811132 AM | direct | 105 | 1 | 22150.1 | 159 | – |
| 2441 | 01-AUG-08 11.22.48.734526 AM | direct | 106 | 5 | 2075.2 | 160 | – |
| 2442 | 27-JUL-06 12.22.59.662632 PM | direct | 107 | 9 | 52471.9 | 154 | – |
| 2443 | 27-JUL-06 01.34.16.562632 PM | direct | 108 | 0 | 3646 | 154 | – |
| 2444 | 27-JUL-07 02.22.27.462632 PM | direct | 109 | 1 | 77727.2 | 155 | – |
| 2445 | 27-JUL-06 03.34.38.362632 PM | direct | 144 | 8 | 5537.8 | 158 | – |
| 2448 | 18-JUN-07 04.41.49.262632 PM | direct | 145 | 5 | 1388 | 158 | – |
| 2449 | 13-JUN-07 05.49.07.162632 PM | direct | 146 | 6 | 86 | 155 | – |
| 2450 | 11-APR-07 06.18.10.362632 PM | direct | 147 | 3 | 1636 | 159 | – |
| 2451 | 17-DEC-07 05.03.52.562632 PM | direct | 148 | 7 | 10474.6 | 154 | – |
| 2452 | 06-OCT-07 08.59.43.462632 PM | direct | 149 | 5 | 12589 | 159 | – |
| 2453 | 04-OCT-07 09.53.34.362632 PM | direct | 116 | 0 | 129 | 153 | – |
| 2456 | 07-NOV-06 07.53.25.989889 PM | direct | 117 | 0 | 3878.4 | 163 | – |
| 2457 | 31-OCT-07 11.22.16.162632 PM | direct | 118 | 5 | 21586.2 | 159 | – |
Comparison Operators
Based on my experiences in teaching SQL fundamentals, comparison operators are the most easily understood by those beginning to learn SQL. This is likely because most of us will have seen and used these operators in mathematics and spreadsheet software (e.g., Microsoft Excel). Below is a table of comparison operators and their plain English translation.
| Operator | Meaning |
|---|---|
| = | Equal to |
| != | Not equal to |
| > | Greater than |
| < | Less than |
| >= | Greater than or equal to |
| < | Less than or equal to |
Let’s put an operator to work by filtering to those products in the product information table with a category ID value of 12. For this example, we’ll retrieve the product ID, product name, and category ID attributes. See the code and corresponding output below.
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.category_id
FROM
oe.product_information
WHERE
oe.product_information.category_id = 12;
| product_id | product_name | category_id |
|---|---|---|
| 1797 | Inkjet C/8/HQ | 12 |
| 2459 | LaserPro 1200/8/BW | 12 |
| 3127 | LaserPro 600/6/BW | 12 |
| 1782 | Compact 400/DQ | 12 |
| 2430 | Compact 400/LQ | 12 |
| 1792 | Industrial 600/DQ | 12 |
| 1791 | Industrial 700/HD | 12 |
| 2302 | Inkjet B/6 | 12 |
| 2453 | Inkjet C/4 | 12 |
In the output above, only those products (9) with a product category of 12 are included. Why? Let’s break the example code down to acquire a better understanding.
In the example code, the operand on the left side of the comparison operator is the category ID attribute. On the right side of the comparison operator is the integer value, 12. Each row’s category ID value is compared to that value. Where the category ID is equal to 12 the condition evaluates to TRUE and the row is included in the output. For those rows where the category ID is not equal to 12 or is unknown, the condition evaluates to FALSE and is not included in the output. If requirements change, say, the interest is now in those products with a category value not equal to twelve, then the equals comparison operator can simply be swapped for the not equal to comparison operator (i.e., !=).
Let’s look at another example, but one where the comparison being made involves an attribute of character or string data type instead of numeric. Suppose there is a need to retrieve the order ID, order date, and order total for all orders made online. Using the orders table, the attribute “order_mode” can be used to apply this filter. See the example code and corresponding output below.
SELECT
oe.orders.order_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.order_mode = 'online';
| order_id | order_date | order_total |
|---|---|---|
| 2355 | 26-JAN-06 09.22.51.962632 AM | 94513.5 |
| 2356 | 26-JAN-08 09.22.41.934562 AM | 29473.8 |
| 2359 | 08-JAN-06 09.34.13.112233 PM | 5543.1 |
| 2360 | 14-NOV-07 12.22.31.223344 PM | 990.4 |
| 2361 | 13-NOV-07 01.34.21.986210 PM | 120131.3 |
| 2362 | 13-NOV-07 02.41.10.619477 PM | 92829.4 |
| 2363 | 23-OCT-07 05.49.56.346122 PM | 10082.3 |
| 2364 | 28-AUG-07 06.18.45.942399 PM | 9500 |
| 2365 | 28-AUG-07 07.03.34.003399 PM | 27455.3 |
| 2366 | 28-AUG-07 08.59.23.144778 PM | 37319.4 |
| 2367 | 27-JUN-08 09.53.32.335522 PM | 144054.8 |
| 2368 | 26-JUN-08 10.19.43.190089 PM | 60065 |
| 2369 | 26-JUN-07 11.22.54.009932 PM | 11097.4 |
| 2370 | 27-JUN-08 12.22.11.647398 AM | 126 |
| 2371 | 16-MAY-07 01.34.56.113356 AM | 79405.6 |
| 2372 | 27-FEB-07 12.22.33.356789 AM | 16447.2 |
| 2373 | 27-FEB-08 01.34.51.220065 AM | 416 |
| 2374 | 27-FEB-08 02.41.45.109654 AM | 4797 |
| 2375 | 26-FEB-07 03.49.50.459233 AM | 103834.4 |
| 2376 | 07-JUN-07 06.18.08.883310 AM | 11006.2 |
| 2377 | 07-JUN-07 07.03.01.001100 AM | 38017.8 |
| 2378 | 24-MAY-07 08.59.10.010101 AM | 25691.3 |
| 2380 | 16-MAY-07 09.53.02.909090 AM | 27132.6 |
| 2382 | 14-MAY-08 10.19.03.828321 AM | 71173 |
| 2383 | 12-MAY-08 11.22.30.545103 AM | 36374.7 |
| 2384 | 12-MAY-08 12.22.34.525972 PM | 29249.1 |
| 2385 | 08-DEC-07 11.34.11.331392 AM | 295892 |
| 2386 | 06-DEC-07 12.22.34.225609 PM | 21116.9 |
| 2387 | 11-MAR-07 03.34.56.536966 PM | 52758.9 |
| 2388 | 04-JUN-07 04.41.12.554435 PM | 282694.3 |
| 2389 | 04-JUN-08 05.49.43.546954 PM | 17620 |
| 2390 | 18-NOV-07 04.18.50.546851 PM | 7616.8 |
In the output above, only those orders (32) with an order mode value of “online” are included. Notice, I’ve intentionally not included the order mode attribute in the output. I did this for two reasons. One, to showcase attributes used in the WHERE clause are not required to also be included in the SELECT clause. And two, in most cases, there is no benefit to be had by including the attribute as the value will read the same for all rows. Minimize the amount of data returned by your queries when and where it makes sense to.
In the example above, the operand on the right-hand side of the comparison operator was a sequence of characters. Conditions utilizing a sequence of characters, in this case the word “online”, require the sequence be enclosed in single quotes (i.e., ‘online’). While some relational database management systems will allow you to also use double quotes, it is important to get in the habit of using single quotes to develop portable solutions. Double quotes should be reserved for identifiers, such as columns and tables.
Logical Operators
Logical operators allow us to filter data based on more complex conditions. They allow us to chain multiple conditions together, compare row values to a set or range of specified values, negate conditions, and implement pattern-matching conditions. Below is a table of logical operators and their behavior when used to evaluate conditions. In the absence of concrete examples, how and when to use each operator can be confusing, so let’s develop a better understanding of each operator through examples.
| Operator | Evaluating Conditions |
|---|---|
| IN | Returns true if the value being compared is equal to one of those listed. |
| BETWEEN | Returns true if the value being compared is within the range of the two values provided, endpoint inclusive. |
| LIKE | Returns true if the value being compared matches a given pattern. |
| NOT | Returns true when the condition is false and false when the condition is true. |
| AND | Returns true when conditions on both sides of the operator are true. |
| OR | Returns true when either condition on each side of the operator are true. |
IN Operator
In the previous examples, comparison operators were used to compare each row’s value for a specified attribute to a single, user-specified value. In many instances, you will need to retrieve those rows where each row’s value for a specified attribute matches one of many specified values or doesn’t match any specified values. For example, suppose instead of retrieving those rows corresponding to products with a category ID value of 12, the requirement in the first example above was slightly altered to include those products with a category ID value of 12, 19, or 31. To satisfy the updated requirement, the IN operator can be used. The IN operator allows you to test whether each row’s value is a member of the user-specified list of values. The list of values provided must be enclosed in parentheses and the values must be of uniform data type. The use of expression lists is a special exception to this rule but are not critical to understand at this point. See the code and corresponding output below capturing the products with a category ID value of 12, 19, or 31.
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.category_id
FROM
oe.product_information
WHERE
oe.product_information.category_id IN (12, 19, 31);
| product_id | product_name | category_id |
|---|---|---|
| 1797 | Inkjet C/8/HQ | 12 |
| 2459 | LaserPro 1200/8/BW | 12 |
| 3127 | LaserPro 600/6/BW | 12 |
| 1782 | Compact 400/DQ | 12 |
| 2430 | Compact 400/LQ | 12 |
| 1792 | Industrial 600/DQ | 12 |
| 1791 | Industrial 700/HD | 12 |
| 2302 | Inkjet B/6 | 12 |
| 2453 | Inkjet C/4 | 12 |
| 2522 | Battery – EL | 19 |
| 2278 | Battery – NiHM | 19 |
| 2418 | Battery Backup (DA-130) | 19 |
| 2419 | Battery Backup (DA-290) | 19 |
| 3097 | Cable Connector – 32R | 19 |
| 3099 | Cable Harness | 19 |
| 2380 | Cable PR/15/P | 19 |
| 2408 | Cable PR/P/6 | 19 |
| 2457 | Cable PR/S/6 | 19 |
| 2373 | Cable RS232 10/AF | 19 |
| 1734 | Cable RS232 10/AM | 19 |
| 1737 | Cable SCSI 10/FW/ADS | 19 |
| 1745 | Cable SCSI 20/WD->D | 19 |
| 2982 | Drive Mount – A | 19 |
| 3277 | Drive Mount – A/T | 19 |
| 2976 | Drive Mount – D | 19 |
| 3204 | Envoy DS | 19 |
| 2638 | Envoy DS/E | 19 |
| 3020 | Envoy IC | 19 |
| 1948 | Envoy IC/58 | 19 |
| 3003 | Laptop 128/12/56/v90/110 | 19 |
| 2999 | Laptop 16/8/110 | 19 |
| 3000 | Laptop 32/10/56 | 19 |
| 3001 | Laptop 48/10/56/110 | 19 |
| 3004 | Laptop 64/10/56/220 | 19 |
| 3391 | PS 110/220 | 19 |
| 3124 | PS 110V /T | 19 |
| 1738 | PS 110V /US | 19 |
| 2377 | PS 110V HS/US | 19 |
| 2299 | PS 12V /P | 19 |
| 3123 | PS 220V /D | 19 |
| 1748 | PS 220V /EUR | 19 |
| 2387 | PS 220V /FR | 19 |
| 2370 | PS 220V /HS/FR | 19 |
| 2311 | PS 220V /L | 19 |
| 1733 | PS 220V /UK | 19 |
| 2878 | Router – ASR/2W | 19 |
| 2879 | Router – ASR/3W | 19 |
| 2152 | Router – DTMF4 | 19 |
| 3301 | Screws <B.28.P> | 19 |
| 3143 | Screws <B.28.S> | 19 |
| 2323 | Screws <B.32.P> | 19 |
| 3134 | Screws <B.32.S> | 19 |
| 3139 | Screws <S.16.S> | 19 |
| 3300 | Screws <S.32.P> | 19 |
| 2316 | Screws <S.32.S> | 19 |
| 3140 | Screws <Z.16.S> | 19 |
| 2319 | Screws <Z.24.S> | 19 |
| 2322 | Screws <Z.28.P> | 19 |
| 2231 | Desk – S/V | 31 |
| 2335 | Mobile phone | 31 |
| 2350 | Desk – W/48 | 31 |
| 2351 | Desk – W/48/R | 31 |
| 2779 | Desk – OS/O/F | 31 |
| 3337 | Mobile Web Phone | 31 |
For most problems solved programmatically, there exists multiple candidate solutions. The use of the IN operator in the solution above was just one method to retrieve the desired products. Another method is to use multiple OR operators to evaluate each row’s value against a series of conditions. It is less elegant and concise but works all the same. The code below will return the same output as that shown above.
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.category_id
FROM
oe.product_information
WHERE
oe.product_information.category_id = 12
OR oe.product_information.category_id = 19
OR oe.product_information.category_id = 31;
NOT Operator
In the previous example, the goal was to retrieve products with a category ID value of 12, 19, or 31. The category IDs of interest were known in advance and easy to list out following the IN operator. There will be times where the values of interest are not entirely known in advance, or it is simply unreasonable and messy to enumerate them. In such cases, the NOT operator can be used in conjunction with the IN operator. See the code and corresponding output below where those products with category IDs other than 12, 19, and 31 are captured.
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.category_id
FROM
oe.product_information
WHERE
oe.product_information.category_id NOT IN (12, 19, 31);
| product_id | product_name | category_id |
|---|---|---|
| 2254 | HD 10GB /I | 13 |
| 3353 | HD 10GB /R | 13 |
| 3069 | HD 10GB /S | 13 |
| 2253 | HD 10GB @5400 /SE | 13 |
| 3354 | HD 12GB /I | 13 |
| 3072 | HD 12GB /N | 13 |
| 3334 | HD 12GB /R | 13 |
| 3071 | HD 12GB /S | 13 |
| 2255 | HD 12GB @7200 /SE | 13 |
| 1743 | HD 18.2GB @10000 /E | 13 |
| 2382 | HD 18.2GB@10000 /I | 13 |
| 3399 | HD 18GB /SE | 13 |
| 3073 | HD 6GB /I | 13 |
| 1768 | HD 8.2GB @5400 | 13 |
| 2410 | HD 8.4GB @5400 | 13 |
| 2257 | HD 8GB /I | 13 |
| 3400 | HD 8GB /SE | 13 |
| 3355 | HD 8GB /SI | 13 |
| 1772 | HD 9.1GB @10000 | 13 |
| 2243 | Monitor 17/HR/F | 11 |
| 3057 | Monitor 17/SD | 11 |
| 3061 | Monitor 19/SD | 11 |
| 2245 | Monitor 19/SD/M | 11 |
| 3065 | Monitor 21/D | 11 |
| 3331 | Monitor 21/HR | 11 |
| 2252 | Monitor 21/HR/M | 11 |
| 3064 | Monitor 21/SD | 11 |
| 3155 | Monitor Hinge – HD | 11 |
| 3234 | Monitor Hinge – STD | 11 |
| 3350 | Plasma Monitor 10/LE/VGA | 11 |
| 2236 | Plasma Monitor 10/TFT/XGA | 11 |
| 3054 | Plasma Monitor 10/XGA | 11 |
| 2810 | Inkvisible Pens | 32 |
| 2870 | Pencil – Mech | 32 |
| 1781 | CDW 20/48/E | 17 |
| 2264 | CDW 20/48/I | 17 |
| 2260 | DFD 1.44/3.5 | 17 |
| 2266 | DVD 12x | 17 |
| 3077 | DVD 8x | 17 |
| 2259 | FD 1.44/3.5 | 17 |
| 2261 | FD 1.44/3.5/E | 17 |
| 3082 | Modem – 56/90/E | 17 |
| 2270 | Modem – 56/90/I | 17 |
| 2268 | Modem – 56/H/E | 17 |
| 3083 | Modem – 56/H/I | 17 |
| 2374 | Modem – C/100 | 17 |
| 1740 | TD 12GB/DAT | 17 |
| 2409 | TD 7GB/8 | 17 |
| 2262 | ZIP 100 | 17 |
| 2414 | HD 9.1GB @10000 /I | 13 |
| 2415 | HD 9.1GB @7200 | 13 |
| 2395 | 32MB Cache /M | 14 |
| 1755 | 32MB Cache /NM | 14 |
| 2406 | 64MB Cache /M | 14 |
| 2404 | 64MB Cache /NM | 14 |
| 1770 | 8MB Cache /NM | 14 |
| 2412 | 8MB EDO Memory | 14 |
| 2378 | DIMM – 128 MB | 14 |
| 3087 | DIMM – 16 MB | 14 |
| 2384 | DIMM – 1GB | 14 |
| 1749 | DIMM – 256MB | 14 |
| 1750 | DIMM – 2GB | 14 |
| 2394 | DIMM – 32MB | 14 |
| 2400 | DIMM – 512 MB | 14 |
| 1763 | DIMM – 64MB | 14 |
| 2396 | EDO – 32MB | 14 |
| 2272 | RAM – 16 MB | 14 |
| 2274 | RAM – 32 MB | 14 |
| 3090 | RAM – 48 MB | 14 |
| 1739 | SDRAM – 128 MB | 14 |
| 3359 | SDRAM – 16 MB | 14 |
| 3088 | SDRAM – 32 MB | 14 |
| 2276 | SDRAM – 48 MB | 14 |
| 3086 | VRAM – 16 MB | 14 |
| 3091 | VRAM – 64 MB | 14 |
| 1787 | CPU D300 | 15 |
| 2439 | CPU D400 | 15 |
| 1788 | CPU D600 | 15 |
| 2375 | GP 1024×768 | 15 |
| 2411 | GP 1280×1024 | 15 |
| 1769 | GP 800×600 | 15 |
| 2049 | MB – S300 | 15 |
| 2751 | MB – S450 | 15 |
| 3112 | MB – S500 | 15 |
| 2752 | MB – S550 | 15 |
| 2293 | MB – S600 | 15 |
| 3114 | MB – S900/650+ | 15 |
| 3129 | Sound Card STD | 15 |
| 3133 | Video Card /32 | 15 |
| 2308 | Video Card /E32 | 15 |
| 2496 | WSP DA-130 | 15 |
| 2497 | WSP DA-290 | 15 |
| 3106 | KB 101/EN | 16 |
| 2289 | KB 101/ES | 16 |
| 3110 | KB 101/FR | 16 |
| 3108 | KB E/EN | 16 |
| 2058 | Mouse +WP | 16 |
| 2761 | Mouse +WP/CL | 16 |
| 3117 | Mouse C/E | 16 |
| 2056 | Mouse Pad /CL | 16 |
| 2211 | Wrist Pad | 16 |
| 2944 | Wrist Pad /CL | 16 |
| 1742 | CD-ROM 500/16x | 17 |
| 2402 | CD-ROM 600/E/24x | 17 |
| 2403 | CD-ROM 600/I/24x | 17 |
| 1761 | CD-ROM 600/I/32x | 17 |
| 2381 | CD-ROM 8x | 17 |
| 2424 | CDW 12/24 | 17 |
| 1726 | LCD Monitor 11/PM | 11 |
| 2359 | LCD Monitor 9/PM | 11 |
| 3060 | Monitor 17/HR | 11 |
| 3051 | Pens – 10/MP | 32 |
| 3150 | Card Holder – 25 | 32 |
| 3208 | Pencils – Wood | 32 |
| 3209 | Sharpener – Pencil | 32 |
| 3224 | Card Organizer – 250 | 32 |
| 3225 | Card Organizer – 1000 | 32 |
| 3511 | Paper – HQ Printer | 32 |
| 3515 | Lead Replacement | 32 |
| 2986 | Manual – Vision OS/2x + | 33 |
| 3163 | Manual – Vision Net6.3/US | 33 |
| 3165 | Manual – Vision Tools2.0 | 33 |
| 3167 | Manual – Vision OS/2.x | 33 |
| 3216 | Manual – Vision Net6.3 | 33 |
| 3220 | Manual – Vision OS/1.2 | 33 |
| 1729 | Chemicals – RCP | 39 |
| 1910 | FG Stock – H | 39 |
| 1912 | SS Stock – 3mm | 39 |
| 1940 | ESD Bracelet/Clip | 39 |
| 2030 | Latex Gloves | 39 |
| 2326 | Plastic Stock – Y | 39 |
| 2330 | Plastic Stock – R | 39 |
| 2334 | Resin | 39 |
| 2340 | Chemicals – SW | 39 |
| 2365 | Chemicals – TCS | 39 |
| 2594 | FG Stock – L | 39 |
| 2596 | SS Stock – 1mm | 39 |
| 2631 | ESD Bracelet/QR | 39 |
| 2721 | PC Bag – L/S | 39 |
| 2722 | PC Bag – L/D | 39 |
| 2725 | Machine Oil | 39 |
| 2782 | PC Bag – C/S | 39 |
| 3187 | Plastic Stock – B/HD | 39 |
| 3189 | Plastic Stock – G | 39 |
| 3191 | Plastic Stock – O | 39 |
| 3193 | Plastic Stock – W/HD | 39 |
| 3178 | Spreadsheet – SSP/V 2.0 | 21 |
| 3179 | Spreadsheet – SSS/S 2.1 | 21 |
| 3182 | Word Processing – SWP/V 4.5 | 22 |
| 3183 | Word Processing – SWS/V 4.5 | 22 |
| 3197 | Spreadsheet – SSS/V 2.1 | 21 |
| 3255 | Spreadsheet – SSS/CD 2.2B | 21 |
| 3256 | Spreadsheet – SSS/V 2.0 | 21 |
| 3260 | Word Processing – SWP/S 4.4 | 22 |
| 3262 | Spreadsheet – SSS/S 2.2 | 21 |
| 3361 | Spreadsheet – SSP/S 1.5 | 21 |
| 1799 | SPNIX3.3 – SL | 24 |
| 1801 | SPNIX3.3 – AL | 24 |
| 1803 | SPNIX3.3 – DL | 24 |
| 1804 | SPNIX3.3 – UL/N | 24 |
| 1805 | SPNIX3.3 – UL/A | 24 |
| 1806 | SPNIX3.3 – UL/C | 24 |
| 1808 | SPNIX3.3 – UL/D | 24 |
| 1820 | SPNIX3.3 – NL | 24 |
| 1822 | SPNIX4.0 – SL | 24 |
| 2422 | SPNIX4.0 – SAL | 24 |
| 2452 | SPNIX4.0 – DL | 24 |
| 2462 | SPNIX4.0 – UL/N | 24 |
| 2464 | SPNIX4.0 – UL/A | 24 |
| 2467 | SPNIX4.0 – UL/D | 24 |
| 2468 | SPNIX4.0 – UL/C | 24 |
| 2470 | SPNIX4.0 – NL | 24 |
| 2471 | SPNIX3.3 SU | 24 |
| 2492 | SPNIX3.3 AU | 24 |
| 2493 | SPNIX3.3 C/DU | 24 |
| 2494 | SPNIX3.3 NU | 24 |
| 2995 | SPNIX3.3 SAU | 24 |
| 3290 | SPNIX3.3 DU | 24 |
| 1778 | C for SPNIX3.3 – 1 Seat | 25 |
| 1779 | C for SPNIX3.3 – Doc | 25 |
| 1780 | C for SPNIX3.3 – Sys | 25 |
| 2371 | C for SPNIX4.0 – Doc | 25 |
| 2423 | C for SPNIX4.0 – 1 Seat | 25 |
| 3501 | C for SPNIX4.0 – Sys | 25 |
| 3502 | C for SPNIX3.3 -Sys/U | 25 |
| 3503 | C for SPNIX3.3 – Seat/U | 25 |
| 1774 | Base ISO CP – BL | 29 |
| 1775 | Client ISO CP – S | 29 |
| 1794 | OSI 8-16/IL | 29 |
| 1825 | X25 – 1 Line License | 29 |
| 2004 | IC Browser – S | 29 |
| 2005 | IC Browser Doc – S | 29 |
| 2416 | Client ISO CP – S | 29 |
| 2417 | Client ISO CP – V | 29 |
| 2449 | OSI 1-4/IL | 29 |
| 3101 | IC Browser – V | 29 |
| 3170 | Smart Suite – V/SP | 29 |
| 3171 | Smart Suite – S3.3/EN | 29 |
| 3172 | Graphics – DIK+ | 29 |
| 3173 | Graphics – SA | 29 |
| 3175 | Project Management – S4.0 | 29 |
| 3176 | Smart Suite – V/EN | 29 |
| 3177 | Smart Suite – V/FR | 29 |
| 3245 | Smart Suite – S4.0/FR | 29 |
| 3246 | Smart Suite – S4.0/SP | 29 |
| 3247 | Smart Suite – V/DE | 29 |
| 3248 | Smart Suite – S4.0/DE | 29 |
| 3250 | Graphics – DIK | 29 |
| 3251 | Project Management – V | 29 |
| 3252 | Project Management – S3.3 | 29 |
| 3253 | Smart Suite – S4.0/EN | 29 |
| 3257 | Web Browser – SB/S 2.1 | 29 |
| 3258 | Web Browser – SB/V 1.0 | 29 |
| 3362 | Web Browser – SB/S 4.0 | 29 |
| 2091 | Paper Tablet LW 8 1/2 x 11 | 32 |
| 2093 | Pens – 10/FP | 32 |
| 2144 | Card Organizer Cover | 32 |
| 2336 | Business Cards Box – 250 | 32 |
| 2337 | Business Cards – 1000/2L | 32 |
| 2339 | Paper – Std Printer | 32 |
| 2536 | Business Cards – 250/2L | 32 |
| 2537 | Business Cards Box – 1000 | 32 |
| 2783 | Clips – Paper | 32 |
| 2808 | Paper Tablet LY 8 1/2 x 11 | 32 |
BETWEEN Operator
The BETWEEN operator can be used to filter data based on user-specified lower-bound and upper-bound values. For example, suppose you need to generate a report containing high-level information on each of the orders placed by customers between two dates. Using the query below, all orders between August 1, 2007 and August 31, 2007, inclusive, are returned. The order ID, customer ID, order date, and order total attributes are included in the output.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.order_date BETWEEN '01-AUG-07' AND '31-AUG-07';
| order_id | customer_id | order_date | order_total |
|---|---|---|---|
| 2458 | 101 | 16-AUG-07 03.34.12.234359 PM | 78279.6 |
| 2364 | 145 | 28-AUG-07 06.18.45.942399 PM | 9500 |
| 2365 | 146 | 28-AUG-07 07.03.34.003399 PM | 27455.3 |
| 2366 | 147 | 28-AUG-07 08.59.23.144778 PM | 37319.4 |
As seen in the example code above, when using the BETWEEN operator, the two user-specified values must be separated by the logical operator, AND.
When exploring the IN operator, I covered how there was another way to achieve the same outcome by using multiple conditions chained together by the logical operator, OR. Similarly, the logic captured in the WHERE clause above can be captured using the combination of two compound comparison operators. The code below will return the same output as seen above.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.order_date >= '01-AUG-07'
AND oe.orders.order_date <= '31-AUG-07';
Although the code above requires the order date attribute to be specified on each side of the AND operator and is seemingly less succinct, I find it improves readability and consciously avoids using the BETWEEN operator in production code. The reader of the code and your future self needs to recall how endpoints are treated (i.e., both endpoints are included). When comparison operators are used, the treatment of endpoints is explicitly stated through the operators themselves and can be customized to meet requirements.
LIKE Operator
When filtering on string attributes, it can sometimes be difficult to explicitly state the values of interest. In some instances, all desired values are not known in advance and in others, it is unreasonable to list them due to the number or complexity of the values. These obstacles can be overcome by using the LIKE operator.
The LIKE operator allows users to implement filters based on user-specified patterns. Patterns are specified using SQL’s pattern-matching characters. The two main pattern-matching characters and their meanings can be found in the table below.
| Pattern-matching Character | Meaning |
|---|---|
| % | Matches or is a placeholder for zero or more characters. |
| _ | Matches or is a placeholder for exactly one character. |
Using the pattern-matching characters above, users can implement filters based on a row’s attribute value starting with, ending with, and containing a specified sequence of characters. Let’s walk through a couple of examples to better understand the LIKE operator and supporting pattern-matching characters.
In this first example, suppose you need to generate a report containing information related to all product categories starting with the word or sequences of characters, “hardware.” In the categories table shown at the beginning of this page, there exists nine product categories with a category name starting with that sequence. We can use the LIKE operator along with this specified sequence of characters and the pattern-matching character, “%”, to implement a clear and concise filtering condition. The pattern following the LIKE operator in the code below translates to “starts with hardware followed by zero or more characters.” This pattern will match product category names such as, hardware, hardware1, hardware2, etc. If a category named hardwaresqlshortreads existed, it would match that, too! The code’s corresponding output is also provided below.
SELECT
oe.categories_tab.category_name,
oe.categories_tab.category_description,
oe.categories_tab.category_id,
oe.categories_tab.parent_category_id
FROM
oe.categories_tab
WHERE
oe.categories_tab.category_name LIKE 'hardware%';
| category_name | category_description | category_id | parent_category_id |
|---|---|---|---|
| hardware1 | monitors | 11 | 10 |
| hardware2 | printers | 12 | 10 |
| hardware3 | harddisks | 13 | 10 |
| hardware4 | memory components/upgrades | 14 | 10 |
| hardware5 | processors, sound and video cards, network cards, motherboards | 15 | 10 |
| hardware6 | keyboards, mouses, mouse pads | 16 | 10 |
| hardware7 | other peripherals (CD-ROM, DVD, tape cartridge drives, …) | 17 | 10 |
| hardware8 | miscellaneous hardware (cables, screws, power supplies …) | 19 | 10 |
| hardware | computer hardware and peripherals | 10 | 90 |
For the second example, let us focus on the idea of searching for a sequence of characters within a sequence of characters. In other words, we want to determine if a row’s value for an attribute contains a specified sequence of characters. Suppose there is a need to generate a report containing all printer products from the product information table. Further suppose the product categories table shown at the beginning of this page does not exist, so we cannot simply filter to those products in the product information table with a product category ID value of 12. Instead, we must rely on each product’s description. The code below will return all products with a description containing the word, “printer.” If you examine the corresponding output, you will notice that the solution is not perfect. Printer accessories, such as cables and paper are also included. Nonetheless, the solution provides a reasonable output with products limited to printers and their accessories.
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.product_description
FROM
oe.product_information
WHERE
oe.product_information.product_description LIKE '%printer%';
| product_id | product_name | product_description |
|---|---|---|
| 1797 | Inkjet C/8/HQ | Inkjet printer, color, 8 pages per minute, high resolution (photo quality). Memory: 16MB. Dimensions (HxWxD): 7.3 x 17.5 x 14 inch. Paper size: A4, US Letter, envelopes. Interface: Centronics parallel, IEEE 1284 compliant. |
| 2459 | LaserPro 1200/8/BW | Professional black and white laserprinter, resolution 1200 dpi, 8 pages per second. Dimensions (HxWxD): 22.37 x 19.86 x 21.92 inch. Software: Enhanced driver support for SPNIX v4.0; MS-DOS Built-in printer drivers: ZoomSmart scaling technology, billboard, handout, mirror, watermark, print preview, quick sets, emulate laserprinter margins. |
| 3127 | LaserPro 600/6/BW | Standard black and white laserprinter, resolution 600 dpi, 6 pages per second. Interface: Centronics parallel, IEEE 1284 compliant. Memory: 8MB 96KB receiver buffer. MS-DOS ToolBox utilities for SPNIX AutoCAM v.17 compatible driver. |
| 1782 | Compact 400/DQ | 400 characters per second high-speed draft printer. Dimensions (HxWxD): 17.34 x 24.26 x 26.32 inch. Interface: RS-232 serial (9-pin), no expansion slots. Paper size: A4, US Letter. |
| 2430 | Compact 400/LQ | 400 characters per second high-speed letter-quality printer. Dimensions (HxWxD): 12.37 x 27.96 x 23.92 inch. Interface: RS-232 serial (25-pin), 3 expansion slots. Paper size: A2, A3, A4. |
| 1792 | Industrial 600/DQ | Wide carriage color capability 600 characters per second high-speed draft printer. Dimensions (HxWxD): 22.31 x 25.73 x 20.12 inch. Paper size: 3×5 inch to 11×17 inch full bleed wide format. |
| 1791 | Industrial 700/HD | 700 characters per second dot-matrix printer with harder body and dust protection for industrial uses. Interface: Centronics parallel, IEEE 1284 compliant. Paper size: 3×5 inch to 11×17 inch full bleed wide format. Memory: 4MB. Dimensions (HxWxD): 9.3 x 16.5 x 13 inch. |
| 2380 | Cable PR/15/P | 15 foot parallel printer cable |
| 2408 | Cable PR/P/6 | Standard Centronics 6ft printer cable, parallel port |
| 2457 | Cable PR/S/6 | Standard RS232 serial printer cable, 6 feet |
| 3511 | Paper – HQ Printer | Quality paper for inkjet and laser printers tested to resist printer jams. Acid free for archival purposes. 22lb. weight with brightness of 92. Size: 8 1/2 x 11. Single 500-sheet ream. |
| 2339 | Paper – Std Printer | 20 lb. 8.5×11 inch white laser printer paper (recycled), ten 500-sheet reams |
While the solution above is viable, use caution when writing queries containing filters translating to “contains.” Searching for a specific sequence of characters within values varying in length from row to row, especially the lengthy ones observed within the description attribute, can be computationally expensive. Every character within each row’s description value must be traversed to determine whether the value does or does not contain the target sequence of characters.
Having briefly explored the task of creating filters translating to starts with and contains, let us move onto an example where the target sequence is required to exist at the end of a row’s value. In other words, we want a filter that translates to, ends with. In the code below, the condition in the WHERE clause specifies to retrieve all product categories from the categories table with category names ending in the sequence of characters, “ware.” Without looking at the corresponding output, can you guess which rows will be returned by the query?
SELECT
oe.categories_tab.category_name,
oe.categories_tab.category_description,
oe.categories_tab.category_id,
oe.categories_tab.parent_category_id
FROM
oe.categories_tab
WHERE
oe.categories_tab.category_name LIKE '%ware';
Output (Click to show/hide).
| category_name | category_description | category_id | parent_category_id |
|---|---|---|---|
| hardware | computer hardware and peripherals | 10 | 90 |
| software | computer software | 20 | 90 |
The two product categories with names ending in “ware” are software and hardware. Product category names, such as hardware1, hardware2, software1, and software2 were not returned by the query because the category names do not end with the exact specified sequence of characters.
In each of the three examples above, the “%” character was used to represent zero or more characters in the target pattern. We can use the “_” (underscore) character to be represent exactly one character. To showcase how this pattern-matching character can be used, suppose we are tasked with generating the same report above, but only for the child categories of the software category. The child categories of the software category are those categories with names starting with “software” followed by exactly one character (e.g., 1, 2, 3, etc.). This requirement translates to the pattern “software_”. See the code and corresponding output below.
SELECT
oe.categories_tab.category_name,
oe.categories_tab.category_description,
oe.categories_tab.category_id,
oe.categories_tab.parent_category_id
FROM
oe.categories_tab
WHERE
oe.categories_tab.category_name LIKE 'software_';
| category_name | category_description | category_id | parent_category_id |
|---|---|---|---|
| software1 | spreadsheet software | 21 | 20 |
| software2 | word processing software | 22 | 20 |
| software3 | database software | 23 | 20 |
| software4 | operating systems | 24 | 20 |
| software5 | software development tools (including languages) | 25 | 20 |
| software6 | miscellaneous software | 29 | 20 |
Please note, the LIKE operator was used in the example above strictly for demonstrative purposes. The task can be achieved in a more straightforward manner by relying on the contents of the parent category ID attribute. Filtering to those product categories with a parent category ID value of 20 will result in the same output.
AND & OR Operators
The AND and OR logical operators allow us to implement filters based on multiple conditions. Understanding these two operators is critical to developing queries refined to retrieve the minimal amount of data required for a specific task. Let’s start with the AND operator, continue onto the OR operator, and then build an understanding of how these two operators can be used together.
During the processing of the WHERE clause, each row is evaluated for the conditions specified. When the AND operator is used to chain conditions together a row must satisfy the condition on each side of the operator to be included in the output. The basic syntax can be seen below.
condition_1 AND condition_2
Given the syntax and the data within the orders table shown at the top of this page, suppose there is a need to generate a report containing the order ID, customer ID, order date, and order total attributes for those orders placed by the customer with an ID value of 101 and a corresponding order total value greater than or equal to $50,000. The query to generate this report along with the corresponding output can be found below. Take a moment to review both and then continue for a discussion that further examines the solution and its output.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.customer_id = 101
AND oe.orders.order_total >= 50000;
| order_id | customer_id | order_date | order_total |
|---|---|---|---|
| 2458 | 101 | 16-AUG-07 03.34.12.234359 PM | 78279.6 |
The output above indicates a single row within the orders table satisfied both conditions. Let’s break down how the database arrived at that output. For the sake of this explanation, assume the orders table has four attributes, order ID, customer ID, order date, and order total.
For each row in the orders table, the database used the row’s values when evaluating the conditions specified. Rows where both conditions evaluated to TRUE are kept and included in the output while the others are discarded. In the table below, I’ve added a column for each condition indicating whether the row satisfies the corresponding condition. If you were to traverse the 105 orders in this table manually, then you would arrive at the same conclusion the database did. That is, there is only one row where both conditions are satisfied. Consider giving it a try before moving onto the OR operator.
| order_id | customer_id | order_date | order_total | customer_id = 101 | order_total >= 50,000 |
|---|---|---|---|---|---|
| 2458 | 101 | 16-AUG-07 03.34.12.234359 PM | 78279.6 | TRUE | TRUE |
| 2397 | 102 | 19-NOV-07 02.41.54.696211 PM | 42283.2 | FALSE | FALSE |
| 2454 | 103 | 02-OCT-07 05.49.34.678340 PM | 6653.4 | FALSE | FALSE |
| 2354 | 104 | 14-JUL-08 06.18.23.234567 PM | 46257 | FALSE | FALSE |
| 2358 | 105 | 08-JAN-08 05.03.12.654278 PM | 7826 | FALSE | FALSE |
| 2381 | 106 | 14-MAY-08 08.59.08.843679 PM | 23034.6 | FALSE | FALSE |
| 2440 | 107 | 31-AUG-07 09.53.06.008765 PM | 70576.9 | FALSE | TRUE |
| 2357 | 108 | 08-JAN-06 08.19.44.123456 PM | 59872.4 | FALSE | TRUE |
| 2394 | 109 | 10-FEB-08 09.22.35.564789 PM | 21863 | FALSE | FALSE |
| 2435 | 144 | 02-SEP-07 11.22.53.134567 PM | 62303 | FALSE | TRUE |
| 2455 | 145 | 20-SEP-07 11.34.11.456789 AM | 14087.5 | FALSE | FALSE |
| 2379 | 146 | 16-MAY-07 02.22.24.234567 AM | 17848.2 | FALSE | FALSE |
| 2396 | 147 | 02-FEB-06 01.34.56.345678 AM | 34930 | FALSE | FALSE |
| 2406 | 148 | 29-JUN-07 04.41.20.098765 AM | 2854.2 | FALSE | FALSE |
| 2434 | 149 | 13-SEP-07 05.49.30.647893 AM | 268651.8 | FALSE | TRUE |
| 2436 | 116 | 02-SEP-07 06.18.04.378034 AM | 6394.8 | FALSE | FALSE |
| 2446 | 117 | 27-JUL-07 07.03.08.302945 AM | 103679.3 | FALSE | TRUE |
| 2447 | 101 | 27-JUL-08 08.59.10.223344 AM | 33893.6 | TRUE | FALSE |
| 2432 | 102 | 14-SEP-07 09.53.40.223345 AM | 10523 | FALSE | FALSE |
| 2433 | 103 | 13-SEP-07 10.19.00.654279 AM | 78 | FALSE | FALSE |
| 2355 | 104 | 26-JAN-06 09.22.51.962632 AM | 94513.5 | FALSE | TRUE |
| 2356 | 105 | 26-JAN-08 09.22.41.934562 AM | 29473.8 | FALSE | FALSE |
| 2359 | 106 | 08-JAN-06 09.34.13.112233 PM | 5543.1 | FALSE | FALSE |
| 2360 | 107 | 14-NOV-07 12.22.31.223344 PM | 990.4 | FALSE | FALSE |
| 2361 | 108 | 13-NOV-07 01.34.21.986210 PM | 120131.3 | FALSE | TRUE |
| 2362 | 109 | 13-NOV-07 02.41.10.619477 PM | 92829.4 | FALSE | TRUE |
| 2363 | 144 | 23-OCT-07 05.49.56.346122 PM | 10082.3 | FALSE | FALSE |
| 2364 | 145 | 28-AUG-07 06.18.45.942399 PM | 9500 | FALSE | FALSE |
| 2365 | 146 | 28-AUG-07 07.03.34.003399 PM | 27455.3 | FALSE | FALSE |
| 2366 | 147 | 28-AUG-07 08.59.23.144778 PM | 37319.4 | FALSE | FALSE |
| 2367 | 148 | 27-JUN-08 09.53.32.335522 PM | 144054.8 | FALSE | TRUE |
| 2368 | 149 | 26-JUN-08 10.19.43.190089 PM | 60065 | FALSE | TRUE |
| 2369 | 116 | 26-JUN-07 11.22.54.009932 PM | 11097.4 | FALSE | FALSE |
| 2370 | 117 | 27-JUN-08 12.22.11.647398 AM | 126 | FALSE | FALSE |
| 2371 | 118 | 16-MAY-07 01.34.56.113356 AM | 79405.6 | FALSE | TRUE |
| 2372 | 119 | 27-FEB-07 12.22.33.356789 AM | 16447.2 | FALSE | FALSE |
| 2373 | 120 | 27-FEB-08 01.34.51.220065 AM | 416 | FALSE | FALSE |
| 2374 | 121 | 27-FEB-08 02.41.45.109654 AM | 4797 | FALSE | FALSE |
| 2375 | 122 | 26-FEB-07 03.49.50.459233 AM | 103834.4 | FALSE | TRUE |
| 2376 | 123 | 07-JUN-07 06.18.08.883310 AM | 11006.2 | FALSE | FALSE |
| 2377 | 141 | 07-JUN-07 07.03.01.001100 AM | 38017.8 | FALSE | FALSE |
| 2378 | 142 | 24-MAY-07 08.59.10.010101 AM | 25691.3 | FALSE | FALSE |
| 2380 | 143 | 16-MAY-07 09.53.02.909090 AM | 27132.6 | FALSE | FALSE |
| 2382 | 144 | 14-MAY-08 10.19.03.828321 AM | 71173 | FALSE | TRUE |
| 2383 | 145 | 12-MAY-08 11.22.30.545103 AM | 36374.7 | FALSE | FALSE |
| 2384 | 146 | 12-MAY-08 12.22.34.525972 PM | 29249.1 | FALSE | FALSE |
| 2385 | 147 | 08-DEC-07 11.34.11.331392 AM | 295892 | FALSE | TRUE |
| 2386 | 148 | 06-DEC-07 12.22.34.225609 PM | 21116.9 | FALSE | FALSE |
| 2387 | 149 | 11-MAR-07 03.34.56.536966 PM | 52758.9 | FALSE | TRUE |
| 2388 | 150 | 04-JUN-07 04.41.12.554435 PM | 282694.3 | FALSE | TRUE |
| 2389 | 151 | 04-JUN-08 05.49.43.546954 PM | 17620 | FALSE | FALSE |
| 2390 | 152 | 18-NOV-07 04.18.50.546851 PM | 7616.8 | FALSE | FALSE |
| 2391 | 153 | 27-FEB-06 05.03.03.828330 PM | 48070.6 | FALSE | FALSE |
| 2392 | 154 | 21-JUL-07 08.59.57.571057 PM | 26632 | FALSE | FALSE |
| 2393 | 155 | 10-FEB-08 07.53.19.528202 PM | 23431.9 | FALSE | FALSE |
| 2395 | 156 | 02-FEB-06 08.19.11.227550 PM | 68501 | FALSE | TRUE |
| 2398 | 157 | 19-NOV-07 09.22.53.224175 PM | 7110.3 | FALSE | FALSE |
| 2399 | 158 | 19-NOV-07 10.22.38.340990 PM | 25270.3 | FALSE | FALSE |
| 2400 | 159 | 10-JUL-07 01.34.29.559387 AM | 69286.4 | FALSE | TRUE |
| 2401 | 160 | 10-JUL-07 02.22.53.554822 AM | 969.2 | FALSE | FALSE |
| 2402 | 161 | 02-JUL-07 03.34.44.665170 AM | 600 | FALSE | FALSE |
| 2403 | 162 | 01-JUL-07 04.49.13.615512 PM | 220 | FALSE | FALSE |
| 2404 | 163 | 01-JUL-07 04.49.13.664085 PM | 510 | FALSE | FALSE |
| 2405 | 164 | 01-JUL-07 04.49.13.678123 PM | 1233 | FALSE | FALSE |
| 2407 | 165 | 29-JUN-07 07.03.21.526005 AM | 2519 | FALSE | FALSE |
| 2408 | 166 | 29-JUN-07 08.59.31.333617 AM | 309 | FALSE | FALSE |
| 2409 | 167 | 29-JUN-07 09.53.41.984501 AM | 48 | FALSE | FALSE |
| 2410 | 168 | 24-MAY-08 10.19.51.985501 AM | 45175 | FALSE | FALSE |
| 2411 | 169 | 24-MAY-07 11.22.10.548639 AM | 15760.5 | FALSE | FALSE |
| 2412 | 170 | 29-MAR-06 10.22.09.509801 AM | 66816 | FALSE | TRUE |
| 2413 | 101 | 29-MAR-08 01.34.04.525934 PM | 48552 | TRUE | FALSE |
| 2414 | 102 | 29-MAR-07 02.22.40.536996 PM | 10794.6 | FALSE | FALSE |
| 2415 | 103 | 29-MAR-06 01.34.50.545196 PM | 310 | FALSE | FALSE |
| 2416 | 104 | 29-MAR-07 04.41.20.945676 PM | 384 | FALSE | FALSE |
| 2417 | 105 | 20-MAR-07 05.49.10.974352 PM | 1926.6 | FALSE | FALSE |
| 2418 | 106 | 20-MAR-04 04.18.21.862632 PM | 5546.6 | FALSE | FALSE |
| 2419 | 107 | 20-MAR-07 07.03.32.764632 PM | 31574 | FALSE | FALSE |
| 2420 | 108 | 13-MAR-07 08.59.43.666320 PM | 29750 | FALSE | FALSE |
| 2421 | 109 | 12-MAR-07 09.53.54.562432 PM | 72836 | FALSE | TRUE |
| 2422 | 144 | 16-DEC-07 08.19.55.462332 PM | 11188.5 | FALSE | FALSE |
| 2423 | 145 | 21-NOV-07 10.22.33.362632 AM | 10367.7 | FALSE | FALSE |
| 2424 | 146 | 21-NOV-07 10.22.33.263332 AM | 13824 | FALSE | FALSE |
| 2425 | 147 | 16-NOV-06 11.34.22.162552 PM | 1500.8 | FALSE | FALSE |
| 2426 | 148 | 17-NOV-06 12.22.11.262552 AM | 7200 | FALSE | FALSE |
| 2427 | 149 | 10-NOV-07 01.34.22.362124 AM | 9055 | FALSE | FALSE |
| 2428 | 116 | 10-NOV-07 02.41.34.463567 AM | 14685.8 | FALSE | FALSE |
| 2429 | 117 | 10-NOV-07 03.49.25.526321 AM | 50125 | FALSE | TRUE |
| 2430 | 101 | 02-OCT-07 06.18.36.663332 AM | 29669.9 | TRUE | FALSE |
| 2431 | 102 | 14-SEP-06 07.03.04.763452 AM | 5610.6 | FALSE | FALSE |
| 2437 | 103 | 01-SEP-06 08.59.15.826132 AM | 13550 | FALSE | FALSE |
| 2438 | 104 | 01-SEP-07 09.53.26.934626 AM | 5451 | FALSE | FALSE |
| 2439 | 105 | 31-AUG-07 10.19.37.811132 AM | 22150.1 | FALSE | FALSE |
| 2441 | 106 | 01-AUG-08 11.22.48.734526 AM | 2075.2 | FALSE | FALSE |
| 2442 | 107 | 27-JUL-06 12.22.59.662632 PM | 52471.9 | FALSE | TRUE |
| 2443 | 108 | 27-JUL-06 01.34.16.562632 PM | 3646 | FALSE | FALSE |
| 2444 | 109 | 27-JUL-07 02.22.27.462632 PM | 77727.2 | FALSE | TRUE |
| 2445 | 144 | 27-JUL-06 03.34.38.362632 PM | 5537.8 | FALSE | FALSE |
| 2448 | 145 | 18-JUN-07 04.41.49.262632 PM | 1388 | FALSE | FALSE |
| 2449 | 146 | 13-JUN-07 05.49.07.162632 PM | 86 | FALSE | FALSE |
| 2450 | 147 | 11-APR-07 06.18.10.362632 PM | 1636 | FALSE | FALSE |
| 2451 | 148 | 17-DEC-07 05.03.52.562632 PM | 10474.6 | FALSE | FALSE |
| 2452 | 149 | 06-OCT-07 08.59.43.462632 PM | 12589 | FALSE | FALSE |
| 2453 | 116 | 04-OCT-07 09.53.34.362632 PM | 129 | FALSE | FALSE |
| 2456 | 117 | 07-NOV-06 07.53.25.989889 PM | 3878.4 | FALSE | FALSE |
| 2457 | 118 | 31-OCT-07 11.22.16.162632 PM | 21586.2 | FALSE | FALSE |
The OR operator differs from the AND operator in that it is not all or nothing. If either condition separated by the OR operator evaluates to TRUE, then the row is included in the output. Using the same example above but with the OR operator instead of the AND operator, can you guess what the output might look like? For starters, it is a given that the single row returned when using the AND operator will also be returned when using the OR operator because both conditions evaluate to TRUE for the given row. In addition to that row, any row for which either condition evaluates to TRUE will also be returned. For clarity, see the code and corresponding output below. You will notice the output has expanded from a single row to twenty-seven rows. Based on our knowledge of the previous example, we can infer an additional twenty-six orders were placed by customers other than the customer with an ID value of 101 with an order total greater than or equal to $50,000.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.customer_id = 101
OR oe.orders.order_total >= 50000;
| order_id | customer_id | order_date | order_total |
|---|---|---|---|
| 2458 | 101 | 16-AUG-07 03.34.12.234359 PM | 78279.6 |
| 2440 | 107 | 31-AUG-07 09.53.06.008765 PM | 70576.9 |
| 2357 | 108 | 08-JAN-06 08.19.44.123456 PM | 59872.4 |
| 2435 | 144 | 02-SEP-07 11.22.53.134567 PM | 62303 |
| 2434 | 149 | 13-SEP-07 05.49.30.647893 AM | 268651.8 |
| 2446 | 117 | 27-JUL-07 07.03.08.302945 AM | 103679.3 |
| 2447 | 101 | 27-JUL-08 08.59.10.223344 AM | 33893.6 |
| 2355 | 104 | 26-JAN-06 09.22.51.962632 AM | 94513.5 |
| 2361 | 108 | 13-NOV-07 01.34.21.986210 PM | 120131.3 |
| 2362 | 109 | 13-NOV-07 02.41.10.619477 PM | 92829.4 |
| 2367 | 148 | 27-JUN-08 09.53.32.335522 PM | 144054.8 |
| 2368 | 149 | 26-JUN-08 10.19.43.190089 PM | 60065 |
| 2371 | 118 | 16-MAY-07 01.34.56.113356 AM | 79405.6 |
| 2375 | 122 | 26-FEB-07 03.49.50.459233 AM | 103834.4 |
| 2382 | 144 | 14-MAY-08 10.19.03.828321 AM | 71173 |
| 2385 | 147 | 08-DEC-07 11.34.11.331392 AM | 295892 |
| 2387 | 149 | 11-MAR-07 03.34.56.536966 PM | 52758.9 |
| 2388 | 150 | 04-JUN-07 04.41.12.554435 PM | 282694.3 |
| 2395 | 156 | 02-FEB-06 08.19.11.227550 PM | 68501 |
| 2400 | 159 | 10-JUL-07 01.34.29.559387 AM | 69286.4 |
| 2412 | 170 | 29-MAR-06 10.22.09.509801 AM | 66816 |
| 2413 | 101 | 29-MAR-08 01.34.04.525934 PM | 48552 |
| 2421 | 109 | 12-MAR-07 09.53.54.562432 PM | 72836 |
| 2429 | 117 | 10-NOV-07 03.49.25.526321 AM | 50125 |
| 2430 | 101 | 02-OCT-07 06.18.36.663332 AM | 29669.9 |
| 2442 | 107 | 27-JUL-06 12.22.59.662632 PM | 52471.9 |
| 2444 | 109 | 27-JUL-07 02.22.27.462632 PM | 77727.2 |
In the previous two example queries, either the AND or OR operator was used, but not both. A task may require you to incorporate filtering criteria utilizing both operators. For example, suppose you are tasked with generating a report with the same layout seen in the previous example; however, this time it needs to contain only those orders placed in the year 2006 or orders placed by the customer with an ID value of 101 with an order total value greater than or equal to $50,000. The code below fulfills the reporting requirements by using two compound conditions separated by an OR operator. The first compound condition tests whether or not the order was placed in the year 2006. The second compound condition tests whether or not the order was placed by the customer with an ID value of 101 with an order total value greater than or equal to $50,000. For each order in the output, at least one of these compound conditions evaluated to TRUE. Take a moment to review the code’s output. We’ll dive into the code’s output to better understand why each order exists in the output, next.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
(
oe.orders.order_date >= '01-JAN-06'
AND oe.orders.order_date < '01-JAN-07'
)
OR (
oe.orders.customer_id = 101
AND oe.orders.order_total >= 50000
);
| order_id | customer_id | order_date | order_total |
|---|---|---|---|
| 2458 | 101 | 16-AUG-07 03.34.12.234359 PM | 78279.6 |
| 2426 | 148 | 17-NOV-06 12.22.11.262552 AM | 7200 |
| 2425 | 147 | 16-NOV-06 11.34.22.162552 PM | 1500.8 |
| 2456 | 117 | 07-NOV-06 07.53.25.989889 PM | 3878.4 |
| 2431 | 102 | 14-SEP-06 07.03.04.763452 AM | 5610.6 |
| 2437 | 103 | 01-SEP-06 08.59.15.826132 AM | 13550 |
| 2445 | 144 | 27-JUL-06 03.34.38.362632 PM | 5537.8 |
| 2443 | 108 | 27-JUL-06 01.34.16.562632 PM | 3646 |
| 2442 | 107 | 27-JUL-06 12.22.59.662632 PM | 52471.9 |
| 2415 | 103 | 29-MAR-06 01.34.50.545196 PM | 310 |
| 2412 | 170 | 29-MAR-06 10.22.09.509801 AM | 66816 |
| 2391 | 153 | 27-FEB-06 05.03.03.828330 PM | 48070.6 |
| 2395 | 156 | 02-FEB-06 08.19.11.227550 PM | 68501 |
| 2396 | 147 | 02-FEB-06 01.34.56.345678 AM | 34930 |
| 2355 | 104 | 26-JAN-06 09.22.51.962632 AM | 94513.5 |
| 2359 | 106 | 08-JAN-06 09.34.13.112233 PM | 5543.1 |
| 2357 | 108 | 08-JAN-06 08.19.44.123456 PM | 59872.4 |
In the output above, order ID 2458 exists because the row’s values result in the second compound condition evaluating to TRUE. The customer ID value is 101 and the order total value associated with the order is greater than $50,000. Remember, both conditions on each side of the logical operator, AND, must evaluate to TRUE for the compound condition to be TRUE. In other words, it is not enough that the customer ID value is 101 or the order total is greater than or equal to $50,000. Both things must be true. Aside from this row, all other rows exist in the output because the orders were placed in the year 2006.
Missing or Unknown Values
When working with data, it is somewhat common to encounter rows with unpopulated attributes. This is especially true for tables with definitions not requiring all attributes to be populated and/or the upstream applications where the data originates being fast and loose on data quality. Table definitions and application controls are seldom managed by those writing queries against the data. Most of the time, the best we can do is to learn methods for identifying those rows with unpopulated values. Specific tasks may require you to zero-in on those rows or exclude them. Let us walk through a couple of examples to build an understanding on how to handle both scenarios.
Let us start with retrieving those rows with unpopulated values for a specific attribute. The example task is to identify those rows within the orders table with unpopulated sales representative ID values. Rows with unpopulated sales representative ID values indicate the customer did not work with a sales representative while creating and subsequently placing the order. The code below fulfills this task by using the combination of the IS keyword and NULL. It is important to understand the use of a comparison operator and NULL (e.g., = NULL) or the IN operator would not work here. Why? NULL represents the absence of a value. It is impossible to know whether any given sales representative ID value is equal to or unequal to NULL because we do not know what NULL is. This same rule applies when performing mathematical operations in SQL. A known value, say 10, plus an unknown value is NULL. Again, the outcome of an mathematical operation can’t be determined when one of the operands is NULL. The code’s output is included, capturing the thirty-five orders with unpopulated sales representative ID values. Note that Oracle’s Live SQL platform’s external representation of NULL, or what you see visually, in the output is a the hyphen character.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.sales_rep_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.sales_rep_id IS NULL;
| order_id | customer_id | sales_rep_id | order_date | order_total |
|---|---|---|---|---|
| 2355 | 104 | – | 26-JAN-06 09.22.51.962632 AM | 94513.5 |
| 2356 | 105 | – | 26-JAN-08 09.22.41.934562 AM | 29473.8 |
| 2359 | 106 | – | 08-JAN-06 09.34.13.112233 PM | 5543.1 |
| 2360 | 107 | – | 14-NOV-07 12.22.31.223344 PM | 990.4 |
| 2361 | 108 | – | 13-NOV-07 01.34.21.986210 PM | 120131.3 |
| 2362 | 109 | – | 13-NOV-07 02.41.10.619477 PM | 92829.4 |
| 2363 | 144 | – | 23-OCT-07 05.49.56.346122 PM | 10082.3 |
| 2364 | 145 | – | 28-AUG-07 06.18.45.942399 PM | 9500 |
| 2365 | 146 | – | 28-AUG-07 07.03.34.003399 PM | 27455.3 |
| 2366 | 147 | – | 28-AUG-07 08.59.23.144778 PM | 37319.4 |
| 2367 | 148 | – | 27-JUN-08 09.53.32.335522 PM | 144054.8 |
| 2368 | 149 | – | 26-JUN-08 10.19.43.190089 PM | 60065 |
| 2369 | 116 | – | 26-JUN-07 11.22.54.009932 PM | 11097.4 |
| 2370 | 117 | – | 27-JUN-08 12.22.11.647398 AM | 126 |
| 2371 | 118 | – | 16-MAY-07 01.34.56.113356 AM | 79405.6 |
| 2372 | 119 | – | 27-FEB-07 12.22.33.356789 AM | 16447.2 |
| 2373 | 120 | – | 27-FEB-08 01.34.51.220065 AM | 416 |
| 2374 | 121 | – | 27-FEB-08 02.41.45.109654 AM | 4797 |
| 2375 | 122 | – | 26-FEB-07 03.49.50.459233 AM | 103834.4 |
| 2376 | 123 | – | 07-JUN-07 06.18.08.883310 AM | 11006.2 |
| 2377 | 141 | – | 07-JUN-07 07.03.01.001100 AM | 38017.8 |
| 2378 | 142 | – | 24-MAY-07 08.59.10.010101 AM | 25691.3 |
| 2380 | 143 | – | 16-MAY-07 09.53.02.909090 AM | 27132.6 |
| 2382 | 144 | – | 14-MAY-08 10.19.03.828321 AM | 71173 |
| 2383 | 145 | – | 12-MAY-08 11.22.30.545103 AM | 36374.7 |
| 2384 | 146 | – | 12-MAY-08 12.22.34.525972 PM | 29249.1 |
| 2385 | 147 | – | 08-DEC-07 11.34.11.331392 AM | 295892 |
| 2386 | 148 | – | 06-DEC-07 12.22.34.225609 PM | 21116.9 |
| 2387 | 149 | – | 11-MAR-07 03.34.56.536966 PM | 52758.9 |
| 2388 | 150 | – | 04-JUN-07 04.41.12.554435 PM | 282694.3 |
| 2389 | 151 | – | 04-JUN-08 05.49.43.546954 PM | 17620 |
| 2390 | 152 | – | 18-NOV-07 04.18.50.546851 PM | 7616.8 |
| 2421 | 109 | – | 12-MAR-07 09.53.54.562432 PM | 72836 |
| 2426 | 148 | – | 17-NOV-06 12.22.11.262552 AM | 7200 |
| 2428 | 116 | – | 10-NOV-07 02.41.34.463567 AM | 14685.8 |
Now, let us turn to the task of excluding those rows from the output where the sales representative ID value is not populated. In other words, the goal is to retrieve those orders where a sales representative worked with the customer during the ordering process. This can be achieved by simply using the NOT operator to negate the IS keyword. For clarity, see the code and corresponding output below.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.sales_rep_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.sales_rep_id IS NOT NULL;
| order_id | customer_id | sales_rep_id | order_date | order_total |
|---|---|---|---|---|
| 2458 | 101 | 153 | 16-AUG-07 03.34.12.234359 PM | 78279.6 |
| 2397 | 102 | 154 | 19-NOV-07 02.41.54.696211 PM | 42283.2 |
| 2454 | 103 | 154 | 02-OCT-07 05.49.34.678340 PM | 6653.4 |
| 2354 | 104 | 155 | 14-JUL-08 06.18.23.234567 PM | 46257 |
| 2358 | 105 | 155 | 08-JAN-08 05.03.12.654278 PM | 7826 |
| 2381 | 106 | 156 | 14-MAY-08 08.59.08.843679 PM | 23034.6 |
| 2440 | 107 | 156 | 31-AUG-07 09.53.06.008765 PM | 70576.9 |
| 2357 | 108 | 158 | 08-JAN-06 08.19.44.123456 PM | 59872.4 |
| 2394 | 109 | 158 | 10-FEB-08 09.22.35.564789 PM | 21863 |
| 2435 | 144 | 159 | 02-SEP-07 11.22.53.134567 PM | 62303 |
| 2455 | 145 | 160 | 20-SEP-07 11.34.11.456789 AM | 14087.5 |
| 2379 | 146 | 161 | 16-MAY-07 02.22.24.234567 AM | 17848.2 |
| 2396 | 147 | 161 | 02-FEB-06 01.34.56.345678 AM | 34930 |
| 2406 | 148 | 161 | 29-JUN-07 04.41.20.098765 AM | 2854.2 |
| 2434 | 149 | 161 | 13-SEP-07 05.49.30.647893 AM | 268651.8 |
| 2436 | 116 | 161 | 02-SEP-07 06.18.04.378034 AM | 6394.8 |
| 2446 | 117 | 161 | 27-JUL-07 07.03.08.302945 AM | 103679.3 |
| 2447 | 101 | 161 | 27-JUL-08 08.59.10.223344 AM | 33893.6 |
| 2432 | 102 | 163 | 14-SEP-07 09.53.40.223345 AM | 10523 |
| 2433 | 103 | 163 | 13-SEP-07 10.19.00.654279 AM | 78 |
| 2391 | 153 | 156 | 27-FEB-06 05.03.03.828330 PM | 48070.6 |
| 2392 | 154 | 161 | 21-JUL-07 08.59.57.571057 PM | 26632 |
| 2393 | 155 | 161 | 10-FEB-08 07.53.19.528202 PM | 23431.9 |
| 2395 | 156 | 163 | 02-FEB-06 08.19.11.227550 PM | 68501 |
| 2398 | 157 | 163 | 19-NOV-07 09.22.53.224175 PM | 7110.3 |
| 2399 | 158 | 161 | 19-NOV-07 10.22.38.340990 PM | 25270.3 |
| 2400 | 159 | 161 | 10-JUL-07 01.34.29.559387 AM | 69286.4 |
| 2401 | 160 | 163 | 10-JUL-07 02.22.53.554822 AM | 969.2 |
| 2402 | 161 | 154 | 02-JUL-07 03.34.44.665170 AM | 600 |
| 2403 | 162 | 154 | 01-JUL-07 04.49.13.615512 PM | 220 |
| 2404 | 163 | 158 | 01-JUL-07 04.49.13.664085 PM | 510 |
| 2405 | 164 | 159 | 01-JUL-07 04.49.13.678123 PM | 1233 |
| 2407 | 165 | 155 | 29-JUN-07 07.03.21.526005 AM | 2519 |
| 2408 | 166 | 158 | 29-JUN-07 08.59.31.333617 AM | 309 |
| 2409 | 167 | 154 | 29-JUN-07 09.53.41.984501 AM | 48 |
| 2410 | 168 | 156 | 24-MAY-08 10.19.51.985501 AM | 45175 |
| 2411 | 169 | 156 | 24-MAY-07 11.22.10.548639 AM | 15760.5 |
| 2412 | 170 | 158 | 29-MAR-06 10.22.09.509801 AM | 66816 |
| 2413 | 101 | 161 | 29-MAR-08 01.34.04.525934 PM | 48552 |
| 2414 | 102 | 153 | 29-MAR-07 02.22.40.536996 PM | 10794.6 |
| 2415 | 103 | 161 | 29-MAR-06 01.34.50.545196 PM | 310 |
| 2416 | 104 | 160 | 29-MAR-07 04.41.20.945676 PM | 384 |
| 2417 | 105 | 163 | 20-MAR-07 05.49.10.974352 PM | 1926.6 |
| 2418 | 106 | 163 | 20-MAR-04 04.18.21.862632 PM | 5546.6 |
| 2419 | 107 | 160 | 20-MAR-07 07.03.32.764632 PM | 31574 |
| 2420 | 108 | 160 | 13-MAR-07 08.59.43.666320 PM | 29750 |
| 2422 | 144 | 153 | 16-DEC-07 08.19.55.462332 PM | 11188.5 |
| 2423 | 145 | 160 | 21-NOV-07 10.22.33.362632 AM | 10367.7 |
| 2424 | 146 | 153 | 21-NOV-07 10.22.33.263332 AM | 13824 |
| 2425 | 147 | 163 | 16-NOV-06 11.34.22.162552 PM | 1500.8 |
| 2427 | 149 | 163 | 10-NOV-07 01.34.22.362124 AM | 9055 |
| 2429 | 117 | 154 | 10-NOV-07 03.49.25.526321 AM | 50125 |
| 2430 | 101 | 159 | 02-OCT-07 06.18.36.663332 AM | 29669.9 |
| 2431 | 102 | 163 | 14-SEP-06 07.03.04.763452 AM | 5610.6 |
| 2437 | 103 | 163 | 01-SEP-06 08.59.15.826132 AM | 13550 |
| 2438 | 104 | 154 | 01-SEP-07 09.53.26.934626 AM | 5451 |
| 2439 | 105 | 159 | 31-AUG-07 10.19.37.811132 AM | 22150.1 |
| 2441 | 106 | 160 | 01-AUG-08 11.22.48.734526 AM | 2075.2 |
| 2442 | 107 | 154 | 27-JUL-06 12.22.59.662632 PM | 52471.9 |
| 2443 | 108 | 154 | 27-JUL-06 01.34.16.562632 PM | 3646 |
| 2444 | 109 | 155 | 27-JUL-07 02.22.27.462632 PM | 77727.2 |
| 2445 | 144 | 158 | 27-JUL-06 03.34.38.362632 PM | 5537.8 |
| 2448 | 145 | 158 | 18-JUN-07 04.41.49.262632 PM | 1388 |
| 2449 | 146 | 155 | 13-JUN-07 05.49.07.162632 PM | 86 |
| 2450 | 147 | 159 | 11-APR-07 06.18.10.362632 PM | 1636 |
| 2451 | 148 | 154 | 17-DEC-07 05.03.52.562632 PM | 10474.6 |
| 2452 | 149 | 159 | 06-OCT-07 08.59.43.462632 PM | 12589 |
| 2453 | 116 | 153 | 04-OCT-07 09.53.34.362632 PM | 129 |
| 2456 | 117 | 163 | 07-NOV-06 07.53.25.989889 PM | 3878.4 |
| 2457 | 118 | 159 | 31-OCT-07 11.22.16.162632 PM | 21586.2 |
The previous two examples highlighted the importance of using IS NULL and IS NOT NULL in the WHERE clause to test for the absence of a value. Handling NULLs is not limited to the WHERE clause. You will need to understand how to adjust the way they are treated in calculations and represented in the output. To learn more, consider reading my page dedicated to handling NULLs after acquiring a firm understanding of the BIG SIX.
Having walked through an example or two for each operator commonly used in the WHERE clause, let us move onto the use of slightly more complex operands. If you begin to struggle to grasp the concepts being covered, do not worry. At this point, it is important you understand the operators and supplemental examples previously covered. Use the examples covered throughout the next two sections to open your eyes to common problem-solving strategies used within the WHERE clause.
Derived Values
The majority of filters applied in the WHERE clause will use a pre-existing attribute on the left-hand side of an operator. Up to this point, that has been the case for all the examples we have walked through. In rare situations should you want to perform operations or apply functions to operands on the left-hand side of an operator prior to a condition being evaluated. For queries executed against tables with a large number of rows, requiring an operation or function to be applied prior to the condition being evaluated can result in longer query processing durations. It is also true that the use of a function on the left-hand side of an operator can preclude the use of an index. Indexes are an optimization feature afforded by relational database management systems to speed up data retrieval. Understanding indexes is not critical at this point in the SQL learning journey; however, I want you to imagine the difficulty in looking up a person’s phone number in a phone book with numbers not ordered in any particular way. To find the phone number of interest, we must sift through each page. Likewise, when an index is not used, the database may need to read the entire table (i.e., full table scan) to locate and retrieve the desired data, amounting to a more expensive query. A potential solution to this problem is creating a function-based index, but again, not critical at this point.
Despite the potential downsides, there are scenarios where an operation must take place, or a function be applied to the operand on the left-hand side of an operator prior to a condition being evaluated. For example, suppose the company for which you are employed has tasked you with generating a simple report containing those products still under development. For each product, the ID, name, description, and status is required. Further suppose that the data is in less than pristine condition with product statuses being generated by user-input within a free-form text field in an upstream application. As a result, the current distinct values for the attribute are the following:
under development
UNDER DEVELOPMENT
under DEVELOPMENT
planned
orderable
obsolete
Given the state of the product status column’s values, we have four options. The first three options require the table to be queried beforehand to gather the possible variations of the target value. Products with statuses containing a variation of the target value can be retrieved by first transforming each row’s product status value prior to evaluating an equality condition, using the logical operator, IN, or through a series of equality conditions chained together by ORs. The three queries below will generate the required report. The first query transforms each row’s product status value to all uppercase using the UPPER function, allowing a simple equality condition to be evaluated. The next two queries utilize methods previously covered on this page.
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.product_description,
oe.product_information.product_status
FROM
oe.product_information
WHERE
UPPER(oe.product_information.product_status) = 'UNDER DEVELOPMENT';
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.product_description,
oe.product_information.product_status
FROM
oe.product_information
WHERE
oe.product_information.product_status IN (
'under development',
'under DEVELOPMENT',
'UNDER DEVELOPMENT'
);
SELECT
oe.product_information.product_id,
oe.product_information.product_name,
oe.product_information.product_description,
oe.product_information.product_status
FROM
oe.product_information
WHERE
oe.product_information.product_status = 'under development'
OR oe.product_information.product_status = 'under DEVELOPMENT'
OR oe.product_information.product_status = 'UNDER DEVELOPMENT';
| product_id | product_name | product_status |
|---|---|---|
| 2459 | LaserPro 1200/8/BW | under development |
| 2382 | HD 18.2GB@10000 /I | under development |
| 3399 | HD 18GB /SE | under development |
| 2236 | Plasma Monitor 10/TFT/XGA | under development |
| 2384 | DIMM – 1GB | under development |
| 2400 | DIMM – 512 MB | under development |
| 3114 | MB – S900/650+ | under development |
| 2944 | Wrist Pad /CL | under development |
| 1761 | CD-ROM 600/I/32x | under development |
| 1726 | LCD Monitor 11/PM | under development |
| 3262 | Spreadsheet – SSS/S 2.2 | under development |
The first three options highlighted above are those you should be implementing in the short-term. A long-term option is to work with the owners of the application to change the free-form text field in the front-end to be a drop-down containing a fixed list of values. Once the drop-down list has been implemented, the database maintainer can apply an update to those rows with the unwanted variations to reflect the value, “under development.” Taking these steps would avoid the unwanted variation in values and allow us and others to generate the report above by simply using an equality condition. This requires a joint effort across multiple teams, but it beats the alternative of having to periodically update queries to capture each new variation or perform unnecessary full table scans.
Subqueries
Often, there is a need to filter the output of a query based on the output of another query, dynamically. For example, suppose we need to generate a report containing the most recent order(s) placed based on the contents of the orders table. One way to achieve this is to retrieve all rows from the orders table and then sort them by order date in descending order. As a result of doing so and assuming there are no ties in order date values, the order represented in the first row will be the most recent order. This is an inefficient strategy and its efficacy decreases as the size of the orders table increases due to the amount of time required to retrieve and subsequently sort all rows. A more efficient and less painful strategy is to use a subquery to first return the most recent date value in the orders table and subsequently use that value to filter the orders table to the order(s) with that order date value.
The code below makes use of a subquery to do just that. Observe the operand on the right-hand side of the comparison operator is a simple query returning a single value representing the most recent order date. This query enclosed within parenthesis is executed first. Each row’s order date value is then compared to that value. As a result, the order(s) returned in the output will be the most recent order(s) placed. I’ve included the output following the code.
SELECT
oe.orders.order_id,
oe.orders.customer_id,
oe.orders.order_date,
oe.orders.order_total
FROM
oe.orders
WHERE
oe.orders.order_date = (
SELECT
MAX(oe.orders.order_date)
FROM
oe.orders
);
| order_id | customer_id | order_date | order_total |
|---|---|---|---|
| 2441 | 106 | 01-AUG-08 11.22.48.734526 AM | 2075.2 |
It is difficult to overstate the usefulness of subqueries when solving complex problems. After acquiring a firm understanding of the BIG SIX, consider reading my pages dedicated to subqueries here. These pages explore the clauses for which subqueries can exist and walk through how to implement them to solve real-world problems.
Additional Reading
Not the focus of this page but likely to be important to queries you write in the future is the concept of condition precedence. I strongly recommend you refer to the vendor’s documentation for the relational database management system and version you are using to understand the order in which conditions are evaluated. A page authored by Oracle within their language reference guide for 21c can be found here.
Knowledge Check
If you’d like to confirm your understanding on the WHERE clause and other fundamental concepts, consider solving a handful of my practice problems here.