Как использовать использование join для замены отношения внешнего ключа MySQL - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь сделать простой запрос, который извлекает данные из двух таблиц. В одной таблице ForumPosts хранятся данные, относящиеся к сообщениям на форуме, а в другой - Пользователи - данные о пользователях в моей системе.

Проблема, с которой я столкнулся, заключается в том, что когда я хочу собрать данные о том, какие пользователи опубликовали какие сообщения.

Вот мои таблицы:

mysql> select * from ForumPosts;
+----+--------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+
| ID | UserID | Title                                                                       | Post                                                                                                                                       | ImgFile | SubmissionTime      |
+----+--------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+
|  1 |      1 | More tests                                                            | tests...                                                                                                          | NULL    | 2019-02-26 01:39:28 |
|  2 |      2 | Another test post                          | tests...                                               | NULL    | 2019-02-26 22:52:26 |
|  3 |      1 | Test post                                      | tests…                                                                                   | NULL    | 2019-03-27 22:10:38 |
+----+--------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+
mysql> select * from Users;
+----+----------------+----------+----------+---------------------+
| ID | Email          | UserName | Password | DateRegistered      |
+----+----------------+----------+----------+---------------------+
|  1 | test@test.com  | tester   | dank     | 2019-02-26 22:43:26 |
|  2 | test2@test.com | 2tester  | dank     | 2019-02-26 22:43:26 |
+----+----------------+----------+----------+---------------------+

Я пытался просмотреть некоторые другие сообщения, такие как: Простое соединение MySQL для замены внешнего ключа И все они, кажется, имеют ту же проблему, что и я, но я не могу понять, что не так с моим решением.

Это запрос, который я сейчас использую.

select 
    Title, 
    Users.ID as Author, 
    SubmissionTime as Posted 
from ForumPosts
left join 
    Users on ForumPosts.UserID = Users.ID
order by SubmissionTime desc;

Но что возвращается, так это:

mysql> select 
    ->     Title, 
    ->     UserId as Author, 
    ->     SubmissionTime as Posted 
    -> from ForumPosts
    ->     left join 
    ->     Users on ForumPosts.UserID = Users.ID
    -> order by SubmissionTime desc;
+-----------------------------------------------------------------------------+--------+---------------------+
| Title                                                                       | Author | Posted              |
+-----------------------------------------------------------------------------+--------+---------------------+
| Test post                                      |      1 | 2019-03-27 22:10:38 |
| Another test post                         |      2 | 2019-02-26 22:52:26 |
| More tests                                                            |      1 | 2019-02-26 01:39:28 |
+-----------------------------------------------------------------------------+--------+---------------------+

В результате перечисляются внешние ключи для пользователей, но вместо этого я хочу указать их имена

Я чувствую, что это должно быть довольно простым решением, но я просто не могу его найти.

1 Ответ

0 голосов
/ 28 марта 2019

Добавить Users.UserName, в операторе выбора, как показано ниже

select 
    Title, 
    Users.UserName,
    Users.ID as Author, 
    SubmissionTime as Posted 
from ForumPosts
left join 
    Users on ForumPosts.UserID = Users.ID
order by SubmissionTime desc;
...