SQL-как получить заголовок любимой записи пользователя из базы данных StackExchange

SQL-как получить заголовок любимой записи пользователя из базы данных StackExchange

02.11.2017 08:23:56 Просмотров 60 Источник

Я работаю над проектом, анализирующим поведение пользователя Stackoverflow, и мне нужно получить данные из stackoverflow, одна из данных, которые мне нужно получить, - это получить заголовок любимых сообщений пользователя из базы данных stackexchange. Прямо сейчас, я только понял, как получить любимую информацию пользователя следующим образом:

select VT.name, U.DisplayName
from VoteTypes VT, Votes V, Users U
where VT.Id = 5 and
           VT.Id = V.VoteTypeId and
           U.Id = V.UserId and 
           U.Id = '85597'

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/47068146/sql-how-to-get-a-users-favorite-posts-title-from-stackexchange-database#comment81130140_47068146
никто больше не должен объединяться с помощью таблиц, разделенных запятыми, более 25 лет прошло с тех пор, как был формализован явный синтаксис соединения. пора меняться.
https://stackoverflow.com/questions/47068146/sql-how-to-get-a-users-favorite-posts-title-from-stackexchange-database#comment81130198_47068146
@Used_By_Already что мне изменить? Как я беру курс базы данных прямо сейчас, и он научил меня использовать таким образом.

Ответы - SQL-как получить заголовок любимой записи пользователя из базы данных StackExchange / SQL - How to get a user's favorite posts title from StackExchange Database

Является ответом!
Used_By_Already

03.11.2017 10:39:14

SELECT
      vt.name
    , u.DisplayName
FROM VoteTypes vt 
   , Votes v        <<<<<<<<< not good
   , Users u        <<<<<<<<< not good
WHERE vt.Id = 5
AND vt.Id = v.VoteTypeId  <<<<<<<<< join predicate (vt = v)
AND u.Id = v.UserId       <<<<<<<<< join predicate (u = v)
AND u.Id = '85597

Просто перестаньте использовать запятые между именами таблиц .- Этот простой шаг заставит вас более тщательно рассмотреть вопрос о соединениях.

Переместите предикаты соединения в таблицу, на которую они ссылаются после включения . (Предикаты соединения ссылаются на разные таблицы по обе стороны оператора, например equals.)

SELECT
      vt.name
    , u.DisplayName
FROM VoteTypes vt
   , Votes v ON vt.Id = v.VoteTypeId
   , Users u ON u.Id = v.UserId
WHERE vt.Id = 5
AND 
AND 
AND u.Id = '85597'

Замените эти страшные запятые соответствующим типом соединения и наведите порядок.

SELECT
      vt.name
    , u.DisplayName
FROM VoteTypes vt
INNER JOIN Votes v ON vt.Id = v.VoteTypeId
INNER JOIN Users u ON u.Id = v.UserId
WHERE vt.Id = 5
AND u.Id = '85597'

Сделано.

Если ваш курс использует старый синтаксис, рассмотрите возможность получения лучшего курса.

https://stackoverflow.com/questions/47068146/sql-how-to-get-a-users-favorite-posts-title-from-stackexchange-database/47090692#comment81144871_47090692
Спасибо Вам за исправление! Мне интересно, не могли бы вы также помочь мне с содержанием?
https://stackoverflow.com/questions/47068146/sql-how-to-get-a-users-favorite-posts-title-from-stackexchange-database/47090692#comment81547412_47090692
Теперь ваш вопрос решен? У вас все еще есть вопросы по этому ответу? Чтобы принять ответ "нажмите галочку " для получения дополнительной информации см. справка / принятие
Закрыть X