Download the JDK
Search the Tutorials
Hide the TOC
Trail: JDBC(TM) Database Access
Lesson: JDBC Basics
JDBC Basics
Getting Started
Setting Up a Database
Establishing a Connection
Setting Up Tables
Retrieving Values from Result Sets
Updating Tables
Milestone: The Basics of JDBC
Using Prepared Statements
Using Joins
Using Transactions
Stored Procedures
SQL Statements for Creating a Stored Procedure
Creating Complete JDBC Applications
Running the Sample Applications
Creating an Applet from an Application
Home Page > JDBC(TM) Database Access > JDBC Basics
Using Joins

> Sometimes you need to use two or more tables to get the data you want. For example, suppose the proprietor of The Coffee Break wants a list of the coffees he buys from Acme, Inc. This involves information in the `COFFEES` table as well as the yet-to-be-created `SUPPLIERS` table. This is a case where a join is needed. A join is a database operation that relates two or more tables by means of values that they share in common. In our example database, the tables `COFFEES` and `SUPPLIERS` both have the column `SUP_ID`, which can be used to join them.

> Before we go any further, we need to create the table `SUPPLIERS` and populate it with values.

> The code below creates the table `SUPPLIERS`:

> >     String createSUPPLIERS = "create table SUPPLIERS " +
> >     			 "(SUP_ID INTEGER, SUP_NAME VARCHAR(40), " +
> >     			 "STREET VARCHAR(40), CITY VARCHAR(20), " +
> >     			 "STATE CHAR(2), ZIP CHAR(5))";
> >     stmt.executeUpdate(createSUPPLIERS);

> The following code inserts rows for three suppliers into `SUPPLIERS`:

> >     stmt.executeUpdate("insert into SUPPLIERS values (101, " +
> >         "'Acme, Inc.', '99 Market Street', 'Groundsville', " + "'CA', '95199'");
> >     stmt.executeUpdate("Insert into SUPPLIERS values (49," +
> >         "'Superior Coffee', '1 Party Place', 'Mendocino', 'CA', " + "'95460'");
> >     stmt.executeUpdate("Insert into SUPPLIERS values (150, " +
> >         "'The High Ground', '100 Coffee Lane', 'Meadows', 'CA', " + "'93966'");

> The following code selects the whole table and lets us see what the table `SUPPLIERS` looks like:

> >     ResultSet rs = stmt.executeQuery("select * from SUPPLIERS");

> The result set will look similar to this:

> SUP_ID | SUP_NAME | STREET | CITY | STATE | ZIP
> ------ | ------------- | ------------- | ----------- | ----- | -----
> 101 | Acme, Inc. | 99 Market Street | Groundsville | CA | 95199
> 49 | Superior Coffee | 1 Party Place | Mendocino | CA | 95460
> 150 | The High Ground | 100 Coffee Lane | Meadows | CA | 93966

> Now that we have the tables `COFFEES` and `SUPPLIERS`, we can proceed with the scenario where the owner wants to get a list of the coffees he buys from a particular supplier. The names of the suppliers are in the table `SUPPLIERS`, and the names of the coffees are in the table `COFFEES`. Since both tables have the column `SUP_ID`, this column can be used in a join. It follows that you need some way to distinguish which `SUP_ID` column you are referring to. This is done by preceding the column name with the table name, as in "`COFFEES.SUP_ID`" to indicate that you mean the column `SUP_ID` in the table `COFFEES`. The following code, in which `stmt` is a `Statement` object, selects the coffees bought from Acme, Inc.:

> >     String query = "
> >     SELECT COFFEES.COF_NAME " +
> >        "FROM COFFEES, SUPPLIERS " +
> >        "WHERE SUPPLIERS.SUP_NAME LIKE 'Acme, Inc.' " +
> >        "and SUPPLIERS.SUP_ID = COFFEES.SUP_ID";

> >     ResultSet rs = stmt.executeQuery(query);
> >     System.out.println("Coffees bought from Acme, Inc.: ");
> >     while (rs.next()) {
> >         String coffeeName = rs.getString("COF_NAME");
> >         System.out.println("     " + coffeeName);
> >     }

> This will produce the following output:

> >     Coffees bought from Acme, Inc.:
> >          Colombian
> >          Colombian_Decaf

Previous page: Using Prepared Statements
Next page: Using Transactions