Click here to Skip to main content
15,895,142 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
I have the following tables:

tblEvents (ID, eventTitle, eventDate, venue)
tblVenues (ID, venueName)
tblDJs (ID, Name)
tblEventDJs (djID, eventID)
tblVenueDJs (djID, venueID, datePlaying)

These tables have the following relationships:
<br />
tblEvents.venue = tblVenues.ID<br />
tblEventDJs.djID = tblDJs.ID<br />
tblEventDJs.eventID = tblEvents.ID<br />
tblVenueDJs.djID = tblDJs.ID<br />
tblVenueDJs.eventID = tblEvents.ID


Now, I need to retrieve where and when a dj will be playing. For example:
Column Name              Sample #1        Sample #2
tblDJs.ID                1                1
tblDJs.name              DJ A             DJ A	
tblEvents.ID             1                <empty>
tblEvents.title          Party A          <empty>
tblEvents.eventDate      12/5/2012        <empty>
tblVenues.ID             1                2
tblVenues.name           Club A           Club B
tblVenueDJs.datePlaying  <empty>          13/5/2012


I have tried the following sql query but so far to no avail. Keep in mind that I'm making use of Microsoft's Acesss. I was thinking that maybe I should be using a LEFT JOIN instead of INNER JOIN. Any help is more then welcome.

SQL
SELECT 	tblDJs.ID, 
	tblDJs.name, 
	tblEvents.ID, 
	tblEvents.title, 
	tblEvents.eventDate, 
	tblVenues.ID, 
	tblVenues.name, 
	tblVenueDJs.datePlaying

FROM 	tblEvents 
	INNER JOIN ((tblVenues 
            INNER JOIN tblVenueDJs 
                ON tblVenues.ID = tblVenueDJs.venueID) 
            INNER JOIN (tblDJs 
                INNER JOIN tblEventDJs 
                    ON tblDJs.ID = tblEventDJs.djID) 
        	ON tblVenueDJs.djID = tblDJs.ID) 
        ON (tblEvents.venue = tblVenues.ID) 
	AND (tblEvents.ID = tblEventDJs.eventID)
Posted
Updated 30-May-12 11:46am
v2

If i understand the relations in database correctly ... the following query fetch all DJ's and them events.
SQL
SELECT tblDJs.ID, tblDJs.name, tblEvents.ID, tblEvents.title, tblEvents.eventDate, tblVenues.ID, tblVenues.name, tblVenueDJs.datePlaying
FROM tblDJs LEFT JOIN tblEventDJs ON tblDJs.ID = tblEventDJs.djID
        LEFT JOIN tblVenueDJs ON tblDJs.ID = tblVenueDJs.djID
        LEFT JOIN tblEvents ON tblEvents.ID = tblEventDJs.eventID 
        LEFT JOIN tblEvents ON tblEvents.ID = tblVenueDJs.eventID 
        LEFT JOIN tblVenues ON tblVenues.ID = tblEvents.venue 
 
Share this answer
 
Comments
Ryan Zahra 31-May-12 1:01am    
When I tried this, I got the following error:
Syntax error (missing operator) in query expression 'tblDJs.ID = tblEventDJs.djID
LEFT JOIN tblVenueDJs ON tblDJs.ID = tblVenueDJs.djID
LEFT JOIN tblEvents ON tblEvents.ID = tblEventDJs.eventID
LEFT JOIN tblEvents ON tblEvents.ID = tblVenueDJs.eventID
LEFT JOIN tblVenue'.
Sandeep Mewara 31-May-12 1:34am    
5!
Maciej Los 31-May-12 1:44am    
Thank you, Sandeep ;)
yes, by the example results you want you should use inner, left and right joins something like this


SQL
SELECT 	tblDJs.ID, 
	tblDJs.name, 
	tblEvents.ID, 
	tblEvents.title, 
	tblEvents.eventDate, 
	tblVenues.ID, 
	tblVenues.name, 
	tblVenueDJs.datePlaying
 
FROM 	tblEvents 
	INNER JOIN ((tblVenues 
            LEFT OUTER JOIN tblVenueDJs 
                ON tblVenues.ID = tblVenueDJs.venueID) 
            INNER JOIN (tblDJs 
                LEFT OUTER JOIN tblEventDJs 
                    ON tblDJs.ID = tblEventDJs.djID) 
        	ON tblVenueDJs.djID = tblDJs.ID) 
        ON (tblEvents.venue = tblVenues.ID) 
	AND (tblEvents.ID = tblEventDJs.eventID)
 
Share this answer
 
Comments
Ryan Zahra 31-May-12 1:02am    
When I tried this, I got the following error:
JOIN expression not supported.

Remember that I am using Microsoft Access

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900