Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sql:выбор всех полей, КРОМЕ  [new]
sfdasgdfasdf
Guest
Добрый день.
Вопрос глупый, но нужный.

Как выбрать все поля, кроме определенных?
Т.е. не хочется перечислять все нужные поля, хочется в select (или где-то еще) указать те поля, которые не нужны (нужно при джойне двух таблиц по условия t1.id=t2.id выбрать t1.* и все поля из t2, кроме t2.id.
12 ноя 10, 14:09    [9767393]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Нельзя. Поля придется перечислить.
12 ноя 10, 14:10    [9767406]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
sfdasgdfasdf,

я делал функцию, которая лезла в схему и лепила стринг с полями, которые были/небыли в конфигурации (dbo.konfig). Не совсем кошер, но так надо. Что-то типа
Create procedure dbo.konso_u_synch @t_name varchar(255),@s_key varchar (255)
as
begin
if exists(select 1 from sysobjects o where xType in ('U') and o.name=@t_name)
begin
declare @str varchar(8000)
declare @s varchar(255)
declare @ch varchar(255)

declare name_c cursor local forward_only
for
select c.name 
from syscolumns c 
inner join sysobjects o on o.id = c.id 
where o.xType in ('U') and o.name=@t_name
open name_c

select @str='update ' + @t_name + ' set '

FETCH NEXT FROM name_c INTO @s
WHILE @@FETCH_STATUS = 0 
BEGIN
	if  exists(select 1 from dbo.konfig where tableid=@t_name and columnid=@s)
	begin
		select @ch= action from dbo.konfig where tableid=@t_name and columnid=@s
		
		select @str= case isnull(@ch,'')
				when '' then @str+@s+'=s.'+@s+ ', '
				when '@not' then @str
				else @str+@s +'='+ @ch +', '
				end
	end
	else
	begin	
		select @str=@str+@s+'=s.'+@s+ ', '		
	end
	--end if	
	FETCH NEXT FROM name_c INTO @s
	
end
CLOSE name_c 
DEALLOCATE name_c
select @str=left(@str,len(@str)-1)

print @str
print len(@str)
end
end


Можно допилить напильником
12 ноя 10, 15:14    [9768004]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
sfdasgdfasdf
Добрый день.
Вопрос глупый, но нужный.

Как выбрать все поля, кроме определенных?
Т.е. не хочется перечислять все нужные поля, хочется в select (или где-то еще) указать те поля, которые не нужны (нужно при джойне двух таблиц по условия t1.id=t2.id выбрать t1.* и все поля из t2, кроме t2.id.
Перетащите мышкой из списка объектов, а id сотрите
12 ноя 10, 15:17    [9768034]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Выполняете для своей таблицы запрос типа:
select stuff((select ', ' + name from sys.syscolumns where id = object_id('dbo.sysdiagrams') for xml path('')),1,2,'')
. Copy-Paste в свой select-список. Удаляете ненужные столбцы.
12 ноя 10, 15:33    [9768212]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: sql:выбор всех полей, КРОМЕ  [new]
Настаев
Member

Откуда:
Сообщений: 475
Вопрос не глупый. Если нужных полей 300, а ненужных 1, то вполне резонно указать только ненужные
Сам столкнулся с этой проблемой
Надеюсь, что в будущем такая инструкция появится в Access 2013 ))))
27 май 12, 21:19    [12622747]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Настаев
Вопрос не глупый. Если нужных полей 300, а ненужных 1, то вполне резонно указать только ненужные
Сам столкнулся с этой проблемой
Надеюсь, что в будущем такая инструкция появится в Access 2013 ))))

такая кострукция уже есть давно. Называется представление. В котором вы один раз перечисляете нужные поля.
27 май 12, 21:52    [12622829]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Настаев
Вопрос не глупый. Если нужных полей 300, а ненужных 1, то вполне резонно указать только ненужные
Сам столкнулся с этой проблемой
Надеюсь, что в будущем такая инструкция появится в Access 2013 ))))


+ и в FoxPro тоже
27 май 12, 22:35    [12622962]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
sfdasgdfasdf,

Как выводить в запросе все столбцы кроме одного, не перечисляя их?
28 май 12, 07:35    [12623541]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
можно выделить название нужной таблицы в коде, нажать Alt+F1, скопировать нужные поля и расставить запятые. Получается быстро и удобно, хотя полей тоже бывает много.
28 май 12, 09:07    [12623778]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
sfdasgdfasdf,
DECLARE 
  @TSQL VARCHAR(MAX)

SET @TSQL = 'SELECT ' +
STUFF((SELECT ', '+COLUMN_NAME
 FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
  TABLE_NAME='Laptop' AND  --таблица
  COLUMN_NAME NOT IN ('code')  --ненужные поля
ORDER BY ORDINAL_POSITION
FOR XML PATH('')),1,2,'') + ' FROM Laptop'

PRINT @TSQL
EXEC (@TSQL)
28 май 12, 09:24    [12623836]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
step_ks
Member

Откуда:
Сообщений: 936
А потом в таблицу добавляются новые поля, и все равно приходится менять запросы.
28 май 12, 09:56    [12624021]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Гузы
Guest
Если нужных полей 300, а ненужных 1, то ...

Скорее всего что-то не так в доме Облонских...
Вы уж простите за off!
28 май 12, 10:19    [12624140]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
step_ks
А потом в таблицу добавляются новые поля, и все равно приходится менять запросы.

Ничего менять не надо. Просто новые поля будут так же выводиться в запросе.
А вот если их выводить не нужно, то нужно будет их добавить в NOT IN (...).
28 май 12, 10:23    [12624164]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
step_ks
Member

Откуда:
Сообщений: 936
pegoopik
А вот если их выводить не нужно, то нужно будет их добавить в NOT IN (...).
ну если только вы их будете в таблице держать
28 май 12, 10:30    [12624206]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
step_ks
pegoopik
А вот если их выводить не нужно, то нужно будет их добавить в NOT IN (...).
ну если только вы их будете в таблице держать
Так эту таблицу легко получить из схемы. Так что...
28 май 12, 12:20    [12625011]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Хотя да, немного не подумал... Вы имели в виду, что в той таблице надо держать исключаемые поля?
В-принципе, логично. Тем более, что одна дополнительная табличка на производительность самого сервера - не повлияет, а вот на скорость выполнения запросов - очень даже нехило даст прибыль...
28 май 12, 12:24    [12625035]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Use Extended Properties, Luke
28 май 12, 13:16    [12625411]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
step_ks
А потом в таблицу добавляются новые поля, и все равно приходится менять запросы.

Я не понял.. А как Вы себе это по другому представляете? Изменилось количество полей, и запрос каким-то образом должен прочитать мысли программиста и понять надо это новое поле выводить или нет?
Так и так придётся менять запрос - это неизбежно.
28 май 12, 14:30    [12625948]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
step_ks
Member

Откуда:
Сообщений: 936
pegoopik
step_ks
А потом в таблицу добавляются новые поля, и все равно приходится менять запросы.

Я не понял.. А как Вы себе это по другому представляете? Изменилось количество полей, и запрос каким-то образом должен прочитать мысли программиста и понять надо это новое поле выводить или нет?
Так и так придётся менять запрос - это неизбежно.

Я это к тому, что профита от "select кроме" особо нет.
28 май 12, 14:33    [12625978]     Ответить | Цитировать Сообщить модератору
 Re: sql:выбор всех полей, КРОМЕ  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
step_ks,

Другое дело :)
28 май 12, 14:36    [12626004]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить