2012-04-12 3 views
0

Возможный дубликат:
SQL SELECT across two tablesPHP/MySQL - Как извлечь данные из одного столбца относительно другого

Я хочу создать небольшой форум в PHP и MySQL. У меня есть две таблицы:

forum_posts: Удостоверение личности (primary_key), user_id (foreign_key), текст

и

пользователь ID (primary_key), имя пользователя

Теперь я хочу перечислить весь форум сообщений и каждой должности я хочу отобразить автора.

Моя попытка:

$mySQL_getPosts = mysql_query('SELECT * FROM forum_posts ORDER BY id ASC'); 

Это, конечно, дает мне только все сообщения. Но как мне установить соединение с моей пользовательской таблицей?

В конце концов, я хочу, чтобы отобразить запись так:

Username wrote: | Here goes the text from forum_posts 
+2

http://en.wikipedia.org/wiki/Join_%28SQL%29 –

ответ

2

Что вам нужно сделать, это соединение между 2 таблицами. В вашем случае это будет выглядеть так:

SELECT f.text, u.username FROM forum_posts f JOIN user u ON (f.user_id = u.id)

Узнайте больше о SQL, особенно соединений. Существует много типов объединений, и вы столкнетесь с некоторыми из них. Если вы пытаетесь создать форум-подобный веб-сайт в PHP + MySQL, большинство запросов, которые вы будете писать, будут содержать как минимум 1 соединение.

+0

+1 присоединение предпочтительнее мой ответ http://stackoverflow.com/questions/2241991/in -mysql-запросы, почему потребительной нарисуй вместо-оф-WHERE – Jonathan

1

Здесь вам пригодится команда JOIN. LEFT JOIN будет получать записи от forum_posts, даже если нет ассоциированного пользователя. Если этого не может быть, или если вы не хотите публиковать анонимные сообщения, отбросьте ЛЕВУЮ часть.

SELECT f.*, u.username FROM forum_posts AS f LEFT JOIN user AS u ON f.id = u.id ORDER BY id ASC

1

Вы можете использовать основное внутреннее соединение, чтобы связать две таблицы вместе, например, так:

SELECT username, text 
FROM forum_posts 
INNER JOIN user ON forum_posts.user_id = user.id 
ORDER BY id ASC 

Примечание: Это также лучше, чтобы выбрать только столбцы вам нужно от ваших таблиц, а не от всего.

1

Для установления связи между двумя таблицами u необходимо использовать соединения mysql.

forum_posts: Удостоверение личности (primary_key), user_id (foreign_key), текст [Главная таблица]

пользователь: идентификатор (primary_key), имя пользователя [подключения эту таблицу с помощью основных таблиц идентификаторов]

$sql_query_string = "Select fp.* from forum_posts as fp 
>      left join user as u on (u.id = fp.user_id) 
>      order by fp.id asc"; 
> 
> $result = mysql_query($sql_query_string); 
> 
> While($data = mysql_fetch_row($result)){ 
>  echo "<pre>";print_r($result);"</pre>"; } 

Этот запрос будет полезно для и отображения автора

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