Member 11856456 Ответов: 1

Как получить определенные столбцы в сочетании с обычно используемым оператором SQL snippet


Поэтому в данный конкретный момент я не могу найти способ включить определенные имена столбцов в оператор, который я использую.

Вот код:
SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows), 
	[Columnname] = c.name
FROM 
    sysobjects so, 
    sysindexes si, 
    syscolumns c
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
    2 DESC


это исходный код без syscloumns:
SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows)
FROM 
    sysobjects so, 
    sysindexes si	
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
  2 desc




Я думаю, что мог бы использовать что-то вроде колонки C., Но она продолжает давать мне эту ошибку:
Column 'sysobjects.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


Все, что я пытаюсь сделать, это получить количество строк в таблице и иметь определенные столбцы, такие как дата занятости и проданные продукты. но я просто не могу использовать то, что у меня уже есть, чтобы включить эти столбцы.

Что я уже пробовал:

попытался добавить syscolumns в список, но, как было сказано выше, я постоянно получаю ошибку.

0x01AA

[Columnname] = MIN(c.name)

Member 11856456

Просто попробовал это сделать сейчас, он не дает мне никакой конкретной информации о столбце и просто повторяет "acceptable_cursor_options" в каждой строке.

0x01AA

Да, поэтому нужно подумать о том, чтобы включить В. название в группы, и если вы делаете так, то снова использовать ваш оригинальный [Имя_столбца] = с.название

1 Ответов

Рейтинг:
11

Kornfeld Eliyahu Peter

В SQL в тот момент, когда вы используете агрегатную функцию, все столбцы в списке выбора должны быть продуктом такой функции или включаться в группу по частям...
c.name не...
Это для начала... Другая проблема - ваш старый синтаксис соединения (который создаст очень дорогое перекрестное соединение)... Поскольку нет никакого условия вообще на syscolumns он умножит результирующие наборы и увеличит их до экстремальных размеров...
Вы также тратите ресурсы впустую, Преобразуя имя объекта в идентификатор объекта-OBJECT_ID (...) - в то время как у вас уже есть идентификатор под рукой. sysobjects...
И, наконец, непонятно, какова ваша цель со вторым запросом?


0x01AA

Хорошее объяснение / баллы, а 5

Kornfeld Eliyahu Peter

Спасибо...

Member 11856456

поэтому я попытаюсь нарисовать диаграмму, используя скобки в качестве отображения столбцов.

|Название таблицы|количество строк|Дата трудоустройства|проданные продукты|

использование функции sql reader в vb.net для отображения информации в listview. Просто простой способ просмотра данных, как только я нажимаю на базу данных. У меня все настроено, кроме соответствующего SQL-оператора. Есть ли лучший способ получить данные?

Kornfeld Eliyahu Peter

Итак, вам нужна строка для каждой таблицы, как это:

table1 / count1|t1col1|t1col2|t1col3
table2 / count2|t2col1|t2col2|t2col3|t2col4|t2col5
table3 / count3|t3col1|t3col2

Проблема в том, что SQL обрабатывает только таблицы - это не таблица (строки подсказок разные)