- Я действительно не был уверен, как сформулировать заголовок запроса, поэтому не стесняйтесь изменять это! -Показать пустую строку для «необоснованных» данных данных
Цель: показать все «под-данные» в виде сетки, а также строку, показывающую, что для свойств, где нет данных, нет данных. Поэтому, если вы выполнили поиск по шаблону Property 1, и было свойство «1» с 2 строками деталей, а также свойство «11», но без каких-либо подробностей было бы три строки на datagrid (два для свойства «1» 'и один для свойства' 11 ') Строка для свойства «11» будет иметь UPRN, а затем другие строки будут иметь «Нет данных для этого UPRN»
Проблема: при поиске пользователя в сетке показаны детали из «TblAssociatedData» «однако то, что я хочу сделать, - это когда нет данных для одного из потенциальных UPRN в« TblProperty ». Я хочу вернуть строку для этого также с« Нет данных », чтобы пользователь мог видеть, что поиск действителен. собственности.
Это не проблема, когда нет данных для показа, у меня есть эта работа правильно.
Я предполагаю, что кто-то спросил об этом, но я пробовал разные фразы и поиски, но не могу найти, что мне нужно.
код я использую сейчас:
SELECT * FROM TblAssociatedData AS a
INNER JOIN TblProperty As p
on p.UPRN = a.UPRN
WHERE
a.SurveyDate between @sDateFrom and @sDateTo AND
(a.UPRN LIKE '%' + @sUPRN + '%' or
p.PostCode LIKE '%' + @sPostcode + '%' or
p.ShopName LIKE '%' + @sPropertyName + '%' or
p.Street LIKE '%' + @sStreet + '%' or
p.Reg LIKE '%' + @sRegion + '%' or
a.SurveyCompany LIKE '%' + @sSurveyCompany + '%')
Не будучи в состоянии получить мою голову вокруг, как добавить следующую часть я сделал непроверенный макет, как если бы это было в .aspx странице самого к надеюсь, покажет, что мой мыслительный процесс, с точки зрения результатов, есть.
расположение кода, чтобы показать мыслительный процесс
sSQL1 = SELECT * FROM TBLProperty WHERE UPRN LIKE '%vUPRN%'
-- select and then loop
dsNames1 = New SqlDataSource
dsNames1.ConnectionString = sConnString
dsNames1.SelectCommand = sSQL1
For Each datarow1 As Data.DataRowView In dsNames1.Select(DataSourceSelectArguments.Empty)
Dim vCount As Int = SELECT * FROM TBLProperty WHERE UPRN LIKE "'& datarow1("UPRN") &'"
If vCount > 0 Then
For Each datarow1 As Data.DataRowView In dsNames1.Select(DataSourceSelectArguments.Empty)
--loop through database and output i.e.
DateOfIssue = datarow("UPRN")
DateOfIssue = datarow("DateOfIssue")
Next
Else
--put default text here
DateOfIssue = vUPRN
DateOfIssue = "-"
End If
По сути, когда я не получаю возврат для найденного имущества, я хочу, чтобы выводить что-то вроде ниже для UPRNs.
SELECT 'No data found.' as ColumnName1, '' as ColumnName2, '' as ColumnName3, '' as ColumnName4
Вы должны посмотреть, как использовать 'левую join'. В остальном все эти подстановочные запросы (например, 'LIKE '%' + @sUPRN + '%'' будут убивать производительность, если у вас нет очень маленьких наборов данных. И учитывая, что вы используете 'или', чтобы объединить их вместе, – TobyLL
Я понимаю плохие аспекты LIKE, но, к сожалению, это необходимо в этом случае. – indofraiser
Я до: Итак, если я придерживаюсь UPRN 99 и 999, используя приведенный ниже код Я получаю два UPRNS: SELECT * FROM TblProperty WHERE UPRN LIKE '% 99%' Это правильно Если я пытаюсь: ВЫБРАТЬ p.UPRN, ISNULL (a.UPRN, 'Not Found') В столбце 3 FROM TblProperty AS p LEFT JOIN Tbl AssociatedData Как на a.UPRN = p.UPRN \t ГДЕ \t \t \t a.UPRN LIKE '% 99%' Я ожидаю 14 результатов для '99', и тогда не будет ни для '999', но я хочу один, чтобы быть там. – indofraiser