#c# #asp.net #sql #visual-studio-2010 #reporting-services
#c# #asp.net #sql #visual-studio-2010 #службы отчетов
Вопрос:
У меня есть таблица (concepttable), в которой хранятся эмоции в столбце conceptname, такие как happy sad и т. Д. Пользователи могут добавлять в него больше эмоций с помощью веб-формы asp. В том же наборе данных есть еще одна таблица с именем (blog), которая содержит строку из нескольких записей в блоге с указанием дат ввода.
Как бы я обошел, используя служебный отчет, чтобы использовать droplist, который отображает сохраненные эмоции в (conceptname), а затем показывает, сколько раз эта выбранная эмоция, такая как sad, появлялась во всех строках blogcontent в таблице blog?
Любая помощь приветствуется, я пытался слепо использовать объединения и полнотекстовый поиск, но не уверен, какой способ обойти для достижения этой цели. Я прикрепил изображение, показывающее источники данных.
Результат, которого я хочу добиться, — это диаграмма, похожая на эту:
Извините, если это расплывчато, добавьте комментарий, если вы не уверены, что я имею в виду. Спасибо за любую помощь!
Комментарии:
1. Какое поле в таблице blog содержит концепцию?
2. концепция хранится в отдельной таблице под названием conceptname, таблица блогов содержит только записи. Итак, две таблицы нужно сравнивать друг с другом? или объединенный?
3. Итак, в вашей таблице блога есть текстовое поле с именем CONTENT? И в этом поле можно вводить такие эмоции, как грусть, гнев и т. Д.? Это правильно?
4. нет, извините, в блоге есть отдельная таблица с именем CONCEPT, которая содержит эмоции в разделе Conceptname. СОДЕРЖИМОЕ содержит записи блога в таблице блогов. Если вы посмотрите на 1-й скриншот, он показывает 2 таблицы слева. Спасибо
Ответ №1:
Вот SQL, который вам нужен:
select conceptName,COUNT(distinct blogId) as Tot
from conceptTable ct
join blogs on content like '%' ct.conceptName '%'
group by conceptName
Для получения первой даты появляется концепция
select conceptName,min(inputDate) as FirstTime,COUNT(distinct blogId) as Tot
from conceptTable ct
join blogs on content like '%' ct.conceptName '%'
group by conceptName
Чтобы получить самую последнюю дату, появляется концепция
select conceptName,max(inputDate) as MostRecent,COUNT(distinct blogId) as Tot
from conceptTable ct
join blogs on content like '%' ct.conceptName '%'
group by conceptName
Чтобы получить все даты
select conceptName,inputDate,COUNT(distinct blogId) as Tot
from conceptTable ct
join blogs on content like '%' ct.conceptName '%'
group by conceptName,inputDate
Комментарии:
1. Хотя это делает то, что вы просите, это может работать не так, как ожидалось. Что произойдет, если пользователь введет «Я не доволен» в своем блоге? Код будет считать это появлением «happy», даже если пользователь, который ввел запись, недоволен…. Есть много подобных ошибок, которые следует учитывать.
2. Привет, спарки, это почти все, но как мне получить дату ввода из таблицы blog для отображения?