Forgotten rows

From SQLZOO
Revision as of 11:47, 2 August 2012 by Connor (Talk | contribs)

Jump to: navigation, search

In this example you are shown how to include the rows your JOIN function automatically leaves out as it does not perform the join when one of the values is 0.

This is done by adding a either a LEFT JOIN or a UNION making the join also to reveal the rows with a count of 0.

schema:scott
DROP TABLE customer;
DROP TABLE invoice;
 CREATE TABLE customer(
  id INTEGER,
  name VARCHAR(20));
INSERT INTO customer VALUES (1,'Betty');
INSERT INTO customer VALUES (2,'Robert');
INSERT INTO customer VALUES (3,'Janette');
CREATE TABLE invoice(
  invoiceno INTEGER,
  whn DATE,
  custid INTEGER,
  cost INTEGER );
INSERT INTO invoice VALUES (1,'2006-11-01',1,100);
INSERT INTO invoice VALUES (2,'2006-11-05',1,500);
INSERT INTO invoice VALUES (3,'2006-11-11',3,200);

The following query will only give two rows as the JOIN function automatically does not include rows with a count of 0.

SELECT name, COUNT(*)
FROM customer JOIN invoice ON (id=custid)
GROUP BY name

In order to obtain the rows where the count from the query is 0 a LEFT JOIN or a UNION can be used.

 SELECT name, COUNT(*)
 FROM customer LEFT JOIN invoice ON (id=custid)
Personal tools
Namespaces

Variants
Actions
Reference
Toolbox
Google AdSense