Douglas S. Davis wrote:
Hi,

If the following isn't appropriate, please feel free to ignore. The program I'm referring to is written in Perl and uses a MySQL database, so I thought perhaps it would be appropriate for this list.

I have a webpage that displays a user's profile by selecting the data in the "profiles" database that corresponds to the user's ID number (in the profiles database that number is stored as the "id_num"). I have another table that stores comments that are posted to each user's profile page.

What I need to do is:

#1) Display a user's profile by looking up the data in the profiles database.

#2) Look in the comments database for any comments that have the user's id_num associated with it, and display the comments and the comment posters' names as found by querying the profile database on the comment posters' ID numbers.

Can this be accomplished with a join.

Basically two tables with data similar to this:

Profiles Table
----------------------------
| id |      name      |
________________
| 1 | Bill Clinton    |
---------------------------
| 2 | George Bush |
---------------------------
| 3 | Gerald Ford   |
---------------------------



Comments Table
--------------------------------------------------
| user_id | poster_id | comment     |
--------------------------------------------------
|     1      |      2       | What a guy. |
--------------------------------------------------
|     2      |      3       | What a jerk. |
--------------------------------------------------
|     1      |      3      | Cigar lover.    |
--------------------------------------------------

When I display the profile for Bill Clinton ("id" #1 in the Profiles table), it needs to pull the comments made to Bill's profile (the ones in the Comments table with the "user_id" matching Bill's id from the Profiles table: "What a guy.", and "Cigar lover") and also look up the name of the person who made those comments by taking the "poster_id" from the Comments table and matching them with a name from the first table (for the two comments on Bill's profile, that would be "George Bush" and "Gerald Ford").

Can this be done in one SQL query? If so, what would it look like?

Thanks!

                                        Douglas
Douglas S. Davis
Programmer/Analyst
Haverford College
Administrative Computing
370 Lancaster Ave.
Haverford, PA 19041
610-896-4206


This is a "How do I write this query?" question, rather than a Perl DBI question, so it would be better on the general list. I've copied the general list so any further discussion can take place there.

Yes, you can do this with a join. You end up joining to the Profiles table twice, once for the name of the subjec of the quote and once for the source of the quote. Something like this:

  SELECT p1.name AS Subject, c.comment AS Quote, p2.name AS Source
  FROM Profiles p1
  LEFT JOIN Comments c ON p1.id = c.user_id
  LEFT JOIN Profiles p2 ON c.poster_id = p2.id;

Michael

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to