On Fri, Nov 22, 2002 at 06:56:53PM -0500, Michael T. Babcock wrote:
> On Fri, Nov 22, 2002 at 06:20:14PM -0500, Philip Mak wrote:
> > sql,query
> > 
> 
> Why not just:
> SELECT * FROM users, boardAdmins, boardMembers WHERE id = 5;
> 
> You're not really 'joining', since boardAdmins and boardMembers
> don't have the structure JOINs are made for (it seems).

Oops! I was typing my example from memory, and did it wrong.

Sorry, it's supposed to be like this:

    SELECT *
    FROM boards
    LEFT JOIN boardAdmins
        ON boardAdmins.userId = #{userId}
        AND boardAdmins.boardId = boards.id
    LEFT JOIN boardMembers
        ON boardMembers.userId = #{userId}
        AND boardMembers.boardId = boards.id
    AND boards.id = #{boardId}

For each entry in "boards", there are zero or more corresponding
entries in boardAdmins and boardMembers.

The above could be rewritten with 3 separate SELECT statements:

    SELECT *
    FROM boards
    WHERE id = #{boardId}

    SELECT *
    FROM boardMembers
    WHERE userId = #{userId}
    AND boardId = #{boardId}

    SELECT *
    FROM boardAdmins
    WHERE userId = #{userId}
    AND boardId = #{boardId}

So, I'm wondering which way would be faster.

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to