Помогите написать неочевидный (для меня) запрос

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Помогите написать неочевидный (для меня) запрос

Сообщение Volan » 24.06.2003 (Вт) 13:05

Пишу под Access.
Есть таблица которая содержит столбцы в которых данные есть и есть несколько столбцов, которые абсолютно пусты. Подскажите, как написать запрос, чтобы в выборке оказались только те столбцы где данные есть??
Заранее спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.06.2003 (Ср) 8:38

Допустим, имеется 5 столбцов. 2й и 4й пустые. Тогда запрос:

SELECT Столбец1, Столбец3, Столбец5 FROM Таблица
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 25.06.2003 (Ср) 13:04

Спасибо за внимание к моему вопросу. Понял, что вопрос сформулирован не корректно. Чуть поясню. Есть таблица с фиксированным числом столбцов (допустим 10). Эта таблица формируется на основе определенного запроса таким образом, что часть столбцов точно будет пустыми. Но не известно какие имено. В этом и закавыка. Т.е вроде в запрос надо включить все поля, но как запретить вывод столбцов не содержащих данных?

Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Сообщение Alex404 » 25.06.2003 (Ср) 22:51

Вопрос еще в том настаиваешь ли ты чтобы решение было реализовано исключительно средствами SQL. Если нет то сформировав запрос включающий суммы каждого поля (это если они числовые)
sql="SELECT SUM(поле1) as п1,...SUM(ПолеN) as пN FROM Таблица "
кстати если не числовые тоже небеда:
sql="SELECT SUM(iif(поле1<>'',1,0)) as п1,...SUM(iif(полеN<>'',1,0)) as пN FROM Таблица "

пробегаешь по ПОЛЯМ полученного рекордсета (Set RS=База.OpenRecordset( sql) ) параллельно формируя строку для последнего и решающего запроса

strSQL="SELECT "
For n=1 to RS.Fields.Count
if RS.Fields(n)>0 then strSQL=strSQL & " Поле" & n & ","
next
strSQL=ФункцияОтрезкиПоследнейЗапятой(strSQL) & " FROM Таблица "
Вот запросик и создан...
Коряво правда, но сработает .

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 26.06.2003 (Чт) 16:31

Спасибо, Алех404.
Похоже своим ответом ты мне помог решить еще пару задач. Пошел проверять.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 146

    TopList