Комментарий tbl к Sql-запросу

#sql #self-join

#sql #самосоединение

Вопрос:

 Comment:tbl

CommentId PK  
CommentEntry  
CommentDate  
Category  
CommentCommentId  
BlogEntryId FK


Insert into Comment(CommentId, CommentEntry, CommentDate, Category, CommentCommentId, BlogEntryId)
Values("1","I love shoes","10-3-2011","1","" ,"13"),
("2","I love shoes too","10-4-2011","1","1" ,"13"),
("3","There nice shoes in the mall","2","","13");
  

ВОПРОС: Создайте для первого комментария, сделанного к данной записи в блоге, любые дальнейшие комментарии, сделанные только к этому первоначальному комментарию. Пользователю должно быть предложено ввести уникальный идентификатор записи в блоге.

ANS ПРЕДПОЛАГАЕТСЯ, ЧТО :

 ("1","I love shoes","10-3-2011","1","" ,"13"),
("2","I love shoes too","10-4-2011","1","1" ,"13")
  

Пожалуйста, помогите с sql

Я хочу выполнить самосоединение, чтобы принять [BlogEntryId] и 1-й комментарий к продукту ‘CommentCommentId =»»‘ и все комментарии к этому 1-му комментарию.

пожалуйста, помогите с sql:)

Комментарии:

1. Это совсем не ясно. Можете ли вы попробовать перефразировать некоторые вещи?

2. нет такого понятия, как «внутреннее левое соединение», self или иное…

3. я попробовал SQL ЗАПРОС: ВЫБЕРИТЕ commentId, CommentEntry, CommentDate, адрес электронной почты ИЗ комментария, ГДЕ BlogEntryId = [?Запись в блоге] И CommentCommentId = (ВЫБЕРИТЕ commentId ИЗ комментария, ГДЕ CommentDate = (ВЫБЕРИТЕ min (CommentDate) из комментария)); Но он возвращает только: («2», «Я тоже люблю обувь»,»10-4-2011″,»1″,»1″ ,»13″)

Ответ №1:

Просто добавляю немного к вашему исходному запросу:

 SELECT * 
FROM Comment 
WHERE BlogEntryId = [?Blog Entry] 
AND (
    CommentId = (SELECT CommentId FROM Comment WHERE CommentDate = (SELECT min(CommentDate) from Comment))
    OR
    CommentCommentId = (SELECT CommentId FROM Comment WHERE CommentDate = (SELECT min(CommentDate) from Comment))
    )
  

Ответ №2:

Я думаю, вы хотите что-то вроде этого:

 select * 
from comment c
join comment subc on c.commentcommentid = subc.commentid
where c.commentid = @inputID
  

Это самосоединение.

Я думаю, что ответ на вопрос о домашнем задании просто такой:

 select *
from comment
where commentcommentid = @inputid