SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.11.2021 18:46:45

Федосей
Участник
Зарегистрирован: 16.11.2021
Сообщений: 13

Переписка внутри портала. Словесные имена отправителей и получателей

Действует сервис переписки внутри портала, между его пользователями.

Таблица_1 со списком пользователей портала.
ID, int    name, text
1        Имя_1
2        Имя_2
3        Имя_3
4        Имя_4
5        Имя_5
6        Имя_6
7        Имя_7

Таблица_2, в которой хранится история переписки.
ID, int        name_to        name_from    message
1            ID_2                    ID_7                message_1
2            ID_1                    ID_6                message_2
3            ID_4                    ID_7                message_3
4            ID_5                    ID_6                message_4
5            ID_3                    ID_6                message_5


Что должно получиться.
Таблица_3.
ID, int    name_to        name_from    message
1        Имя_2        Имя_7        message_1
2        Имя_1        Имя_6        message_2
3        Имя_4        Имя_7        message_3
4        Имя_5        Имя_6        message_4
5        Имя_3        Имя_6        message_5

То есть, фактически, во второй таблице надо заменить цифровые ID имён пользователей на сами словесные имена.
Чтобы стало можно было прочесть словесные имена отправителей (name_from) и получателей (name_to) сообщений (message).

Отредактированно Федосей (01.12.2021 12:11:23)

Неактивен

 

#2 01.12.2021 12:32:19

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5761

Re: Переписка внутри портала. Словесные имена отправителей и получателей

select t.id, t1.name as name_to, t2.name as name_from, message from
`Таблица_2` as t join `Таблица_1` as t1 on t1.id = name_to join `Таблица_1` as t2 on t2.id = name_from

Неактивен

 

#3 03.12.2021 11:37:33

Федосей
Участник
Зарегистрирован: 16.11.2021
Сообщений: 13

Re: Переписка внутри портала. Словесные имена отправителей и получателей

Спасибо. Однако.

Ответ MySQL: #1054 - Неизвестный столбец 'name_to' в 'on clause' .
Тип сервера: MariaDB .

К тому же, вызывают опасения фрагменты запроса со знаком равенства.
"t1.id = name_to", "t2.id = name_from".
Расшифровка этих фрагментов показывает, что знак равенства поставлен между разными типами данных: цифрами и строками.
"`Таблица_1`.`id`(int ) = `Таблица_1`.`name`(text)", "`Таблица_2`.`id`(int) = `Таблица_2`.`name`(text)".

Отредактированно Федосей (03.12.2021 11:38:17)

Неактивен

 

#4 03.12.2021 14:47:36

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5761

Re: Переписка внутри портала. Словесные имена отправителей и получателей

select t.id, t1.name as name_to, t2.name as name_from, message from
`Таблица_2` as t join `Таблица_1` as t1 on t1.id = t.name_to join `Таблица_1` as t2 on t2.id = t.name_from

Неактивен

 

#5 03.12.2021 16:34:48

Федосей
Участник
Зарегистрирован: 16.11.2021
Сообщений: 13

Re: Переписка внутри портала. Словесные имена отправителей и получателей

Теперь получилось. Большое спасибо.
Поясняю для новичков в "мускульном" (MySQL) деле.
Чтобы не возникла путаница в понимании.
В данном запросе два выражения "name_to" и "name_from" сначала идут как псевдонимы полей, а затем как названия полей, которые действительно существуют в таблице "Таблица_2".

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson