Впервые мы вводим первый цикл r = 0
и для внутреннего цикла c=0
. В этом случае условие внутреннего цикла не выполняется, поэтому первое состояние только из двух endl
выполняется в начале и в конце внутреннего цикла. Для исправления необходимо поместить во второй цикл условие int c = 0; c <= r; c++
. в этой ситуации вам нужно исправить условие первого цикла на int r=0; r<10; r++
вы можете увидеть это для диаграммы циклов: for_loop_diagram
исправленный код:
[110 ]
Лучшее решение состоит в том, чтобы использовать ContainsTable. Используйте объединение для создания запроса, который ищет все 3 столбца и добавляет, что целое число раньше указывало, какой столбец искался. Отсортируйте результаты по тому целому числу и затем оцените desc.
Разряд является внутренним к SQL-серверу и не чему-то, что можно скорректировать.
Вы могли также управлять возвращенным разрядом путем деления разряда на целое число (Имя будет разделено на 1, Ключевое слово и Местоположение 2 или выше). Это вызвало бы появление различных рейтингов.
Вот некоторый пример sql
: - Рекомендуют использовать, запускают отслеживание изменений и запускают фон updateindex (см. книги онлайн),
SELECT 1 AS ColumnLocation, Key_Table.Rank, FT_Table.* FROM Restaurants AS FT_Table INNER JOIN ContainsTable(Restaurant, Name, 'chilly chicken') AS Key_Table ON FT_Table.RestaurantId = Key_Table.[Key] UNION SELECT 2 AS ColumnLocation, Key_Table.Rank, FT_Table.* FROM Restaurants AS FT_Table INNER JOIN ContainsTable(Restaurant, Keywords, 'chilly chicken') AS Key_Table ON FT_Table.RestaurantId = Key_Table.[Key] UNION SELECT 3 AS ColumnLocation, Key_Table.Rank, FT_Table.* FROM Restaurants AS FT_Table INNER JOIN ContainsTable(Restaurant, Location, 'chilly chicken') AS Key_Table ON FT_Table.RestaurantId = Key_Table.[Key] ORDER BY ColumnLocation, Rank DESC
В продуктивной среде я вставил бы вывод запроса в табличную переменную для выполнения любого дополнительного управления прежде, чем возвратиться, результаты (может не быть необходимым в этом случае). Кроме того, избегайте использования *, просто перечислите столбцы, в которых Вы действительно нуждаетесь.
Править: Вы правы относительно использования ContainsTable, необходимо было бы изменить ключевые слова, чтобы быть '"холодны*" И "курица*"', я делаю это использование процесса, который маркирует входную фразу. Если Вы не захотите делать это, просто заменять каждый экземпляр ContainsTable выше с FreeTextTable, то запрос будет все еще работать то же.