2012-06-03 2 views
2

Я новичок в PHP и MySQL, и у меня возникли проблемы с пониманием JOIN. Я считаю, что проблема заключается в том, что мы действительно понимаем логику запроса. То, что я пытаюсь сделать, - это выбрать все обновления статуса из таблицы с именем «пост», но только те из пользователей, которые я «следую», а затем отображаю их по порядку по дате. Таким образом, у меня есть две базы данных, которые хранятся как это:Присоединяйтесь к двум таблицам в запросе MySQL

сообщения

|post_id|user_id|post_body|date_upload| 
| 1 | 4 | hey. | 01/2/2012 | 

следующим образом

|relation_id|user_id|followee_id| 
| 1  | 4 |  2  | 

Может кто-то пожалуйста, объясните, как я должен синтаксически и логически установить это?

Спасибо!

+0

Я не знаю, как это сделать с соединениями, но делать это по-старому моды просто «SELECT' posts'.'post_id', '' posts'.'userid', posts'.' post_body', 'posts'.'date_upload' FROM' posts', 'follow' WHERE' posts'.'user_id' = 'follow'.'user_id' AND' follow'.'user_id' = 4 ORDER BY 'posts'. 'date_upload' DESC" – Jared

ответ

5

Я думаю, вы найдете это будет работать:

SELECT 
    p.post_id, 
    p.user_id, 
    p.post_body, 
    p.date_upload 
FROM 
    posts p, 
    follows f 
WHERE 
    f.user_id = 4 
    AND 
    f.followee_id = p.user_id 
ORDER BY 
    p.date_upload DESC 
+0

Вы должны выбрать из нескольких таблиц, если хотите __retrieve records__. Вы должны ПРИСОЕДИНЯЙТЕСЬ на две таблицы, если хотите __match records__. – Litty

+0

Не превращает ли MySQL это точно так же, как если бы это было соединение? – Eva

+0

@Airzooka - Это тоже было мое впечатление. Не могли бы вы объяснить? –

1

Попробуйте

select posts.* 
from posts 
     join follows on (follows.user_id = posts.user_id) 
where followee_id = xxxx 
+0

Также помните, что вам может потребоваться поместить имя таблицы перед полями _all_, на всякий случай, если в дороге возникнет двусмысленный случай. – Litty

+1

Я думаю, что 'follow' следует присоединяться к' followee_id' и 'follow.user_id', сопоставляемым с идентификатором этого пользователя, так как этот пользователь является« последователем ». –

-1

Клиенты "стол"

CustomerID   CustomerName 

1     Alfreds Futterkiste 

2     Ana Trujillo Emparedados y helados 

3     Antonio Moreno Taquería 

"Заказы" таблица:

OrderID   CustomerID 

10308    2 

10309    37 

10310    77 

*********************** ОТВЕТ *******************

SELECT Customers.CustomerName, Orders.OrderID 
FROM Customers 
FULL OUTER JOIN Orders 
ON Customers.CustomerID=Orders.CustomerID 
ORDER BY Customers.CustomerName; 

CustomerName OrderID

Alfreds Futterkiste -

Ана Трухильо Emparedados у Helados 10308

Антонио Морено Taqueria 10365

  -        10382 

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