Ed Since schrieb:
> Hello, I'm wondering if this is the most effective way of doing an outer
> join with 'extra criteria' (I don't feel like it's the best way):
>
> SELECT e.EventID, ue.Contact, ut.Discount
> FROM Event e
> LEFT OUTER JOIN
> (SELECT EventID, Contact FROM UserEvent WHERE UserId = 10) ue using
> (EventID)
> LEFT OUTER JOIN
> (SELECT EventID, Discount FROM UserEventType WHERE UserID = 10) ut
> using (EventTypeID)
> WHERE e.FromDate >= '2007-05-15'
>
> Essentially, I'm trying to refactor some legacy php which looks like:
>
> $q1 = mysql_query("SELECT EventID, EventTypeID FROM Event WHERE FromDate
>>= '2007-05-15'");
> while ($r1 = mysql_fetch($q1)) {
> $q2 = mysql_query("SELECT Contact FROM UserEvent WHERE UserId = 10 AND
> EventID = {$r1['EventID']}");
> $q2 = mysql_query("SELECT Discount FROM UserEventType WHERE UserId = 10
> AND EventID = {$r1['EventTypeID']}");
> // ...
> }
how about:
SELECT
e.EventID, ue.Contact, ut.Discount
FROM
Event e
LEFT JOIN
UserEvent ue
ON ue.EventID = e.EventID
AND ue.UserId = 10
LEFT JOIN
UserEventType ut
ON ut.EventTypeID = e.EventTypeID
AND ut.UserID = 10
WHERE
e.FromDate >= '2007-05-15'
optionally
HAVING
NOT IS_NULL(ue.Contact)
--
Sebastian Mendel
www.sebastianmendel.de
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]