2015-01-13 2 views
0

У меня есть две таблицы «пользователей» и «друзей» у меня возникли трудности присоединения ихMySql запросов на две таблицы

 users table 
    id | name | usercode 
    -------------------- 
    1 | david | 2WM 
    2 | Samme | E5N 
    3 | Awudu | C0Q 
    4 | John | VX6 
    5 | Jerem | FG3 

    Friends Table 
id | actor | target 
-------------------- 
1 | E5N | FG3 
2 | 2WM | VX6 
3 | FG3 | 2WM 
4 | C0Q | VX6 
5 | FG3 | VX6 

В основном я хочу, чтобы выбрать всех пользователей из таблицы USERS, который имеет «FG3» в любом мишени или столбца actor в таблице FRIENDS. Результат будет

id | name | usercode | actor | target 
-------------------------------------- 
2 | Samme | E5N  | E5N | FG3 
1 | david | 2WM  | FG3 | 2WM 
5 | John | VX6  | FG3 | VX6 

Я triend все, что я знаю, но все равно я не получаю правильные результаты я буду рад, если кто-нибудь может мне помочь, так как мне нужно, чтобы представить эту работу завтра утром. Спасибо

+0

Вы попробовали 'JOIN'? – Hamish

+1

Пожалуйста, поделитесь своими впечатлениями. –

+0

'join' +' где 'FG3' IN (actor, target) ' –

ответ

2

Похоже, вы хотите присоединиться на usercode равно actor или target, а затем положить «FG3» часть в WHERE пункте:

SELECT users.id, users.name, users.usercode, friends.actor, friends.target 
FROM users 
INNER JOIN friends 
    ON users.usercode = friends.actor OR users.usercode = friends.target 
WHERE users.usercode != 'FG3' 
AND (friends.actor = 'FG3' OR friends.target = 'FG3'); 

Использование INNER JOIN ограничивает запрос только записи, которые существуют в обоих столы.

+0

Я пробовал ваш ответ, но он возвращает 6 результатов вместо трех –

+0

@DavidAddoteye Вы хотите, чтобы результаты Jerem были исключены, так как он FG3? Если это так, просто добавьте 'AND users.usercode! = 'FG3'' в конец этого запроса. – mopo922

+0

Хорошо, спасибо. Я добавил его, и он удалил 2 Джерема, оставив один. У меня теперь есть 4 результата вместо трех. Мне интересно, почему это осталось, хотя я проверил тип данных и строку –

Смежные вопросы