Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Подсчёт уникальных значений во всех столбцах 
     
    
Добавлено: 15.12.10 18:10
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Zahar | Web-сайт: partnerka-ru.info
 Zahar | Web-сайт: partnerka-ru.info
      
       
  
Имеется большая таблица с N столбцов, в которой через SQL осуществляются различные выборки.
 
    
В моей программе необходимо осуществлять предпросмотр количества уникальных данных в каждом столбце по каждой сделанной пользователем выборке (а уже потом пользователь решает выводить выборку в таблицу или не выводить).
Всё, что сумел сообразить, выглядит примерно так:
FROM
(SELECT COUNT(Field1) as count1 FROM (SELECT DISTINCT (Field1) FROM Table WHERE #more_conditions#) AS q1, "
(SELECT COUNT(Field2) as count2 FROM (SELECT DISTINCT (Field2) FROM Table WHERE #more_conditions#) AS q2, "
(SELECT COUNT(Field3) as count3 FROM (SELECT DISTINCT (Field3) FROM Table WHERE #more_conditions#) AS q3, "
...
(SELECT COUNT(FieldN) as count1 FROM (SELECT DISTINCT (FieldN) FROM Table WHERE #more_conditions#) AS qN "
где #more_conditions# - это набор условий.
Это работает, но работает ужасно долго (таблица очень большая, полей очень много).
Есть какие-то более приемлемые варианты? Может проблема в том, что для осуществления подсчёта уникальных значений по каждому столбцу, сначала каждый отдельный раз делается выборка из таблицы согласно #more_conditions# и можно как-то сделать, чтобы выборка была сделана единожды, а уже в ней подсчитывалось количество значений по каждому столбцу (может быть это я глупость написал, извиняйте).
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 3
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  15.12.10 22:28
       
    
       
  
 
    
А если фильтровать, то, видимо, придется писать вложенный запрос.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: Zahar
 Zahar









Вопросов: 91
Ответов: 67
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  15.12.10 23:52
       
    
       
  
Забыл сообщить, что БД на MS ACCESS, а там COUNT DISTINCT как назло не поддерживается
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  17.12.10 00:01
       
    
       
  
Снеси Access, поставь MySQL, ну или MS SQL.