2013-08-31 8 views
0

Я не уверен, правильно ли я это сделаю, поэтому я был бы признателен за проверку реальности. Два стола; пользователей и каналов.MySQL присоединяется и создает новую таблицу (?)

+--------+-----------+----------+----------+ 
| userid | firstname | lastname | username | 
+--------+-----------+----------+----------+ 
|  63 | Chris  | Smith | csmith | 
|  65 | Roger  | Smith | rsmith | 
|  66 | Diane  | Smith | dsmith | 
+--------+-----------+----------+----------+ 

+-----------+--------+-----------+----------------+ 
| messageid | userid | contactid | subject  | 
+-----------+--------+-----------+----------------+ 
|   4 | 67  | 63  | Test message 1 | 
|   5 | 67  | 63  | Test message 2 | 
|   6 | 63  | 67  | Test message 3 | 
|   7 | 63  | 67  | Test message 4 | 
|   8 | 65  | 66  | Test message 5 | 
|   9 | 65  | 66  | Test message 6 | 
|  10 | 66  | 65  | Test message 7 | 
|  11 | 66  | 65  | Test message 8 | 
+-----------+--------+-----------+----------------+ 

Когда я произвожу сообщений на странице пользователя, я должен был бы представлять сообщения, в которых они находятся в идентификатору пользователя (отправитель) или ContactID (получатель). Будет использован пользовательский идентификатор пользователя. НО, мне нужно, чтобы имя пользователя было показано, а не идентификатор пользователя. Итак, это похоже на заявление о соединении, и я могу собрать соединение, которое объединяет почти всю эту информацию.

select a.userid, b.username, a.contactid, 
     a.subject, a.message, a.timestamp 
from feed as a, 
     users as b 
where a.userid=b.userid 

Результат:

+--------+----------+-----------+----------------+-------------------------------------+ 
| userid | username | contactid | subject  | message        | 
+--------+----------+-----------+----------------+-------------------------------------+ 
| 67  | Kimomaru | 63  | Test message 1 | This is a test, hello, hello, hello | 
| 67  | Kimomaru | 63  | Test message 2 | This is a test, hello, hello, hello | 
| 63  | csmith | 67  | Test message 3 | This is a test, hello, hello, hello | 
+--------+----------+-----------+----------------+-------------------------------------+ 

Однако, я хотел бы добавить колонку после ContactID, что бы показать имя получателя, который придет из колонки имя пользователя в таблице пользователя. Как я могу это сделать?

ответ

1
select a.userid, b.username, a.contactid, 
     c.username, a.subject, a.message, a.timestamp 
from feed as a, users as b , users as c 
where a.userid=b.userid and a.contactid=c.userid 
+0

О, ничего себе, мне не приходило в голову ссылаться на одну и ту же таблицу во второй раз как c. Большое вам спасибо, я очень ценю это. – Kimomaru

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