Using the HAVING clause with inner join : Having « Select Query « PostgreSQL

PostgreSQL
1. Aggregate Functions
2. Analytical Functions
3. Array
4. Constraints
5. Cursor
6. Data Type
7. Database
8. Date Timezone
9. Index
10. Inheritance
11. Insert Delete Update
12. Math Functions
13. Postgre SQL
14. Select Query
15. Sequence
16. Store Procedure Function
17. String Functions
18. Subquery
19. Table
20. Table Joins
21. Transaction
22. User Previliege
23. View
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
PostgreSQL » Select Query » Having 
Using the HAVING clause with inner join

postgres=#
postgres=#
postgres=# CREATE TABLE "editions" (
postgres(#      "isbn" text NOT NULL,
postgres(#      "book_id" integer,
postgres(#      "edition" integer,
postgres(#      "publisher_id" integer,
postgres(#      "publication" date,
postgres(#      "type" character(1),
postgres(#      CONSTRAINT "integrity" CHECK (((book_id NOTNULLAND (edition NOTNULL))),
postgres(#      Constraint "pkey" Primary Key ("isbn")
postgres();
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "pkey" for table "editions"
CREATE TABLE
postgres=#
postgres=# insert into editions values('039480001X', 1608,  1,  59,  '1957-03-01', 'h');
INSERT 0 1
postgres=# insert into editions values('0451160916', 7808,  1,  75,  '1981-08-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0394800753', 1590,  1,  59,  '1949-03-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0590445065', 259081,  150'1987-03-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0694003611', 1501,  1,  65,  '1947-03-04', 'p');
INSERT 0 1
postgres=# insert into editions values('0679803335', 1234,  1,  102'1922-01-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0760720002', 190,   1,  91,  '1868-01-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0394900014', 1608,  1,  59,  '1957-01-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0385121679', 7808,  2,  75,  '1993-10-01', 'h');
INSERT 0 1
postgres=# insert into editions values('1885418035', 156,   1,  163'1995-03-28', 'p');
INSERT 0 1
postgres=# insert into editions values('0929605942', 156,   2,  171'1998-12-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0441172717', 4513,  2,  99,  '1998-09-01', 'p');
INSERT 0 1
postgres=# insert into editions values('044100590X', 4513,  3,  99,  '1999-10-01', 'h');
INSERT 0 1
postgres=# insert into editions values('0451457994', 4267,  3,  101'2000-09-12', 'p');
INSERT 0 1
postgres=# insert into editions values('0451198492', 4267,  3,  101'1999-10-01', 'h');
INSERT 0 1
postgres=# insert into editions values('0823015505', 2038,  1,  62,  '1958-01-01', 'p');
INSERT 0 1
postgres=# insert into editions values('0596000855', 414732,  113'2001-03-01', 'p');
INSERT 0 1
postgres=#
postgres=# select from editions;
    isbn    | book_id | edition | publisher_id | publication | type
------------+---------+---------+--------------+-------------+------
 039480001X |    1608 |       |           59 1957-03-01  | h
 0451160916 |    7808 |       |           75 1981-08-01  | p
 0394800753 |    1590 |       |           59 1949-03-01  | p
 0590445065 |   25908 |       |          150 1987-03-01  | p
 0694003611 |    1501 |       |           65 1947-03-04  | p
 0679803335 |    1234 |       |          102 1922-01-01  | p
 0760720002 |     190 |       |           91 1868-01-01  | p
 0394900014 |    1608 |       |           59 1957-01-01  | p
 0385121679 |    7808 |       |           75 1993-10-01  | h
 1885418035 |     156 |       |          163 1995-03-28  | p
 0929605942 |     156 |       |          171 1998-12-01  | p
 0441172717 |    4513 |       |           99 1998-09-01  | p
 044100590X |    4513 |       |           99 1999-10-01  | h
 0451457994 |    4267 |       |          101 2000-09-12  | p
 0451198492 |    4267 |       |          101 1999-10-01  | h
 0823015505 |    2038 |       |           62 1958-01-01  | p
 0596000855 |   41473 |       |          113 2001-03-01  | p
(17 rows)

postgres=#
postgres=#
postgres=# CREATE TABLE "publishers" (
postgres(#      "id" integer NOT NULL,
postgres(#      "name" text,
postgres(#      "address" text,
postgres(#      Constraint "publishers_pkey" Primary Key ("id")
postgres();
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "publishers_pkey" for table "publishers"
CREATE TABLE
postgres=#
postgres=#
postgres=# insert into publishers values(150'Can Press',  '29 Ave. Toronto, ON');
INSERT 0 1
postgres=# insert into publishers values(91,  'Henry Inc.', '11Street New York, NY');
INSERT 0 1
postgres=# insert into publishers values(113'O Inc.',     '10St, Sebastopol, CA');
INSERT 0 1
postgres=# insert into publishers values(62,  'W Pubs',     '1515, New York');
INSERT 0 1
postgres=# insert into publishers values(105'N Press',    '19 W, New York');
INSERT 0 1
postgres=# insert into publishers values(99,  'A Inc',      '37St, New York');
INSERT 0 1
postgres=# insert into publishers values(101'Z Inc',      '37Ave, New York');
INSERT 0 1
postgres=# insert into publishers values(163'M Press',    'PO Box 1215');
INSERT 0 1
postgres=# insert into publishers values(171'B',          '16 W. 18th St. New York');
INSERT 0 1
postgres=# insert into publishers values(102'P Inc',      '37Hudson St, New York');
INSERT 0 1
postgres=# insert into publishers values(75,  'D Inc',      '1540 Broadway, New York');
INSERT 0 1
postgres=# insert into publishers values(65,  'H Pubs',     '10 53rd St, New York');
INSERT 0 1
postgres=# insert into publishers values(59,  'R Inc',      '1540 Broadway, New York');
INSERT 0 1
postgres=#
postgres=# select from publishers;
 id  |    name    |         address
-----+------------+-------------------------
 150 | Can Press  | 29 Ave. Toronto, ON
  91 | Henry Inc. | 115 Street New York, NY
 113 | O Inc.     | 101 St, Sebastopol, CA
  62 | W Pubs     | 1515, New York
 105 | N Press    | 19 W, New York
  99 | A Inc      | 375 St, New York
 101 | Z Inc      | 375 Ave, New York
 163 | M Press    | PO Box 1215
 171 | B          | 16 W. 18th St. New York
 102 | P Inc      | 375 Hudson St, New York
  75 | D Inc      | 1540 Broadway, New York
  65 | H Pubs     | 10 53rd St, New York
  59 | R Inc      | 1540 Broadway, New York
(13 rows)

postgres=#
postgres=#
postgres=#
postgres=# -- Using the HAVING clause
postgres=#
postgres=# SELECT count(e.isbnAS "number of books",
postgres-#         p.name AS publisher
postgres-#         FROM editions AS e INNER JOIN publishers AS p
postgres-#              ON (e.publisher_id = p.id)
postgres-#         GROUP BY publisher
postgres-#         HAVING count(e.isbn1;
 number of books | publisher
-----------------+-----------
               | D Inc
               | A Inc
               | Z Inc
               | R Inc
(rows)

postgres=#
postgres=# drop table publishers cascade;
DROP TABLE
postgres=# drop table editions cascade;
DROP TABLE
postgres=#

           
       
Related examples in the same category
1. Aggregate function, group by and having
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.