mysql join - выберите col1, где col2 соответствует (отфильтрованному) col в другой таблице - PullRequest
0 голосов
/ 25 марта 2012

Вот что я хочу сделать:

  1. select tableB.column1 WHERE tableB.column2 = some_var

  2. select tableA.column1 WHERE tableA.column2 was a result from step one.

Можно ли это сделать за один клик? Какой лучший способ сделать это, особенно с точки зрения производительности? Я использую PHP.

EDIT: У меня есть система обмена сообщениями на основе разговора. 1 convo table и 1 replies table. Таблица ответов включает столбцы: responder and convo_id. Для загрузки convo я получаю все ответы с этим convo_id.

Я хочу использовать convoId, чтобы получить все респонденты в этот конво, и перейти в usertable и выбрать все аватары респондентов, затем сохранить аватары в массиве и вывести их при необходимости.

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Попробуйте следующее:

select a.Column1 
FROM tableA a 
LEFT JOIN tableB b ON a.Column2 = b.Column1 

Вы также можете использовать подзапрос, но это менее производительно.

0 голосов
/ 26 марта 2012

Вот что я решил сделать. Он создает массив ($ avatars), где ключи - это имена пользователей, а значения - аватары.

$result = mysql_query("SELECT 
    DISTINCT users.avatar,replies.sender 
    FROM users 
    JOIN replies 
    ON users.username = replies.sender 
    WHERE replies.convo_id = '$convoID'
");
while($array = mysql_fetch_assoc($result)){
    $avatars[$array['sender']] = $array['avatar'];
}
0 голосов
/ 25 марта 2012

Вы можете попробовать следующий SQL-оператор

SELECT u.avatar
FROM usertable u
JOIN replies r ON u.responder_id = r.responder_id
WHERE r.convo_id = 1234

это получит все аватары пользователей, которые участвовали в разговоре с идентификатором 1234

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...