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

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

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

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

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

textual
Листинг программы
SELECT
  CONCAT(uo.LastName, ' ', uo.FirstName) AS FIO_o,
  CONCAT(up.LastName, ' ', up.FirstName) AS FIO_p,
  Chat.Message
FROM
  Chat
  JOIN Users uo ON uo.ID_Users = Chat.ID_Users_otp
  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
Похожие ответы