2014-12-13 7 views
1

У меня есть 3 таблицыПолучить данные из таблиц базы данных 3

  1. Users - колонны id, userName, ...
  2. Comment - колонны id, text, userId, roomId
  3. CommentRate - колонны userId, commmentId

CommentRate таблицы содержат userId , которому понравился этот комментарий, указанный commentId.

Я хочу, чтобы выбрать все комментарии (id, text, roomId, userId, userName, []ListOfLikes) из Comment таблицы по roomId где []ListOfLikes должен содержать userId, userName.

+0

Я не могу прочитать то, что вы написали, пожалуйста, отформатируйте свой вопрос и дайте ему понять. – Ahmad

+0

Могу ли я выбрать список, в котором находится один из его столбцов? – elgamal

+0

Нет, вы не можете выбрать строку, в которой находится один из столбцов, все должны быть значениями – Ahmad

ответ

1

В этом случае вы можете ссылаться на одну и ту же таблицу (USER) больше раз с разными критериями соединения с использованием псевдонимов, но невозможно преобразовать значения в имена полей. Это заявление будет извлечь все, что вам нужно, но повторять строки и не добавляя столбцы:

SELECT C.ID, C.TEXT, C.ROOMID, U.USERNAME, U2.USERNAME 
FROM COMMENT C 
INNER JOIN COMMENTRATE CR ON C.ID = CR.COMMENTID 
INNER JOIN USERS U ON C.USERID = U.ID 
INNER JOIN USERS U2 ON CR.USERID = U2.ID 
WHERE U.USERNAME IN ('username1', 'username2') 
ORDER BY C.ROOMID 

Если вы хотите, чтобы отфильтровать пользователей, которые нравятся, вы могли бы заменить U с U2 в WHERE строке кода.

+0

, что очень полезно – elgamal

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