-3

I've got 2 tables

event:

id| id_event| id_user | data
++++++++++++++++++++++++++++++++++
1       2         4     20.08.2012
2       2         5     20.08.2012
3       2         6     20.08.2012 

rating:

id | id_event | id_user_who's rate  | id_user_which get rate    | rate
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1         2           4                        5

What I want to achieve is select users which took part in same event where id_user is equal to id_user_login and they were not been rated by him yet.

So like on the example above id_user_login number 4 rated user number 5 so I need query which will give me back user 6

edit

$a = mysql_query("SELECT * FROM event as ev WHERE ev.id_user not in ( select $log1[id] union all SELECT id_user_whos_rate FROM event as e INNER JOIN rating as r on r.id_event = e.id_event WHERE e.id_user = $log1[id]) 

I've tried this one and as return I received all users from event table for id_user_login while one of user was already rated so he shouldn't be display.

4

1 回答 1

0
SELECT  a.id_user
FROM    `event` a
        LEFT JOIN rating b
            ON  a.id_event = b.id_event AND
                a.id_user = b.id_user_which_get_rate
WHERE   a.id_user <> 4 AND
        EXISTS
        (
            SELECT  1
            FROM    `event` c
            WHERE   a.id_event = c.id_event AND
                    c.id_user = 4
        ) AND
        b.id IS NULL

表通过列event与表连接:并使用. 它连接在两列上,以便仅选择在特定事件中属于用户的行。ratingid_eventid_userLEFT JOIN

WHERE子句的目的是从结果列表中排除当前用户。EXISTS过滤器仅event针对登录的特定当前用户。

于 2013-09-03T00:46:31.160 回答