Select в select или другой способ решения - MySQL

Узнай цену своей работы

Формулировка задачи:

Необходимо написать запрос. В таблице Info хранится Имя пользователя. Связана таблица с таблицей Users по ID_Users. В таблице Chat. Хранится ID_отправителя (Chat.ID_Users_otp), ID_получателя (Chat.ID_Users_pol) и сообщение (Message). Вот как вывести Имя того кто написал, Имя того кому написали. И само сообщение. Пробовал типо:
Листинг программы
  1. SELECT Info.Value,
  2. (SELECT Info.Value
  3. FROM Info, Chat, Users
  4. WHERE Users.ID_Users=Chat.ID_Users_pol AND Info.ID_Char=2 AND Users.ID_Users=Info.ID_Users)
  5. FROM Info, Chat, Users
  6. WHERE Users.ID_Users=Chat.ID_Users_otp AND Info.ID_Char=2 AND Users.ID_Users=Info.ID_Users
  7. ORDER BY Chat.DateTime
Говорит возвращается несколько записей.
Сделал что б ФИ хранинились в таблице Users, что бы объединять только 2 таблицы
Листинг программы
  1. SELECT CONCAT(Users.LastName, ' ', Users.FirstName) AS ФИ,
  2. (SELECT CONCAT(Users.LastName, ' ', Users.FirstName) AS ФИ
  3. FROM Users,Chat
  4. WHERE Users.ID_Users = Chat.ID_Users_pol), Chat.Message, Chat.DateTime
  5. FROM Users,Chat
  6. WHERE Users.ID_Users = Chat.ID_Users_otp
  7. ORDER BY Chat.DateTime
Как исправить этот запрос что бы работал?

Решение задачи: «Select в select или другой способ решения»

textual
Листинг программы
  1. SELECT
  2.   CONCAT(uo.LastName, ' ', uo.FirstName) AS FIO_o,
  3.   CONCAT(up.LastName, ' ', up.FirstName) AS FIO_p,
  4.   Chat.Message
  5. FROM
  6.   Chat
  7.   JOIN Users uo ON uo.ID_Users = Chat.ID_Users_otp
  8.   JOIN Users up ON up.ID_Users = Chat.ID_Users_pol

Объяснение кода листинга программы

  1. В данном коде используется язык SQL для работы с базой данных.
  2. Код выполняет запрос SELECT для выборки данных из таблицы Chat.
  3. В запросе используются операторы JOIN для объединения таблиц Chat, Users (для поля uo) и Users (для поля up).
  4. Поля, которые будут возвращены в результате запроса, определены после ключевого слова AS:
    • FIO_o - это комбинация полей LastName и FirstName из таблицы Users с идентификатором uo.
    • FIO_p - это комбинация полей LastName и FirstName из таблицы Users с идентификатором up.
    • Message - это поле из таблицы Chat.
  5. Значения полей LastName и FirstName из таблицы Users с идентификаторами uo и up объединяются с помощью функции CONCAT.
  6. Результатом запроса будет набор данных, содержащий поля FIO_o, FIO_p и Message.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы