I've been trying to solve SQL exercises from http://www.sql-ex.ru/ for some time.
You can find database description below:
Short database description "Computer firm":
The database scheme consists of four tables:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)
The table "Product" includes information about the maker, model number, and type ('PC', 'Laptop', or 'Printer'). It is assumed that model numbers in the Product table are unique for all the makers and product types. Each PC uniquely specifying by a code in the table "PC" is characterized by model (foreign key referencing to Product table), speed (of the processor in MHz), total amount of RAM - ram (in Mb), hard disk drive capacity - hd (in Gb), CD ROM speed - cd (for example, '4x'), and the price. The table "Laptop" is similar to that one of PCs except for the CD ROM speed, which is replaced by the screen size - screen (in inches). For each printer in the table "Printer" it is told whether the printer is color or not (color attribute is 'y' for color printers; otherwise it is 'n'), printer type (laser, jet, or matrix), and the price.
Now, there is an exercise:
Find the makers of the PCs that have speed not less than 450MHz. Result set: Maker.
And my solution is:
Select DISTINCT maker from Product, PC where PC.speed>=450 and Product.model=PC.model
It's correct. But I started thinking and I have a problem. I don't know why this solution:
Select DISTINCT maker from Product, PC where PC.speed>=450 and Product.type='PC'
is not correct. Looks like I still miss some basic knowledge. I'm not sure what this second query does. Any help?