2012-06-07 4 views
0

У меня проблемы с достаточно сложным (мне) запросом. Каждая из отдельных частей работает, она не производит ошибок, но не возвращает то, что она должна возвращать.mysql right join with not in (select)

table_c = things to belong to 
table_s = users that belong to things in table_c 
table_u = users 

И запрос:

SELECT * FROM table_c AS C 
RIGHT JOIN table_u AS U ON C.userid = U.user_id 
WHERE C.userid='xxx' 
    AND C.c_county IN (11, 00) 
    AND C.c_state IN (12, 00) 
    AND C.c_nation='US' 
    AND C.c_privacy='0' 
    AND C.userid NOT IN ( 
    SELECT userid FROM table_s AS S WHERE S.channel_id = C.id) 
ORDER BY U.security, C.chan_name 

Что мне нужно сделать, это выбрать все «вещи принадлежат» в table_c где table_c в округ/штат/страна сопрягать пользователи округа/состояние/нации в table_u или «вещи, принадлежащие к», - это 00 (у которого нет места) и где идентификатор пользователя еще не указан в таблице_s.

Я создаю игровое поле в table_c, расположенном в графстве # 11 в штате # 12, а пользователи из округа № 11 и штата # 12 хотят найти все, к чему они могут принадлежать, поэтому они должны возвращать мою игровую площадку.

Это работает только тогда, когда идентификатор пользователя в WHERE C.userid = 'xxx' принадлежит тем, кто создал игровую площадку.
Что я хочу для пользователей, чтобы создать что-то принадлежащее, а затем позволить другим людям присоединиться к чему-то, поэтому WHERE userid = 'xxx' часть неправильная, и я не уверен, как ее написать ...

Является ли это ясным или ясным, как грязь?

+0

получил определения схемы таблицы? – dispake

+1

http://sqlfiddle.com/ использовать нам будет проще – jcho360

ответ

0

ответ, чтобы удалить полностью присоединиться ... так как у меня уже есть данные пользователя, необходимые для создания округа/штата/нации Я также есть и все остальное так что нет необходимости делать джойн ...

Спасибо за дополнительные глаза!