2013-11-19 2 views
0

запрос создания таблицы:как вычислить столбец, используя другой столбец в sql?

создать каталог таблицы (ID INT, ра двойной, Децл двойной, зона INT);

значение зоны рассчитывается из Decl, используя формулу, приведенную ниже:

CAST (ПОЛ (Децл) As Integer),

я есть вставки все ID, RA, ДЕЦЛ значения таблицу, то мне нужно рассчитать значения зон,

как рассчитать значение зоны таблицы в sql-запросе?

** в другой таблице extractedcatalog, я хочу, чтобы вычислить у из ра, Децл в SQL:

обновление extractedcatalog набор х = (соз (радианы (Децл)) соз (радианы (п))); , но ответили: соединение завершено! есть ли какие-либо проблемы с моим sql? *

Большое спасибо!

+1

образец дб схема поможет !! –

+1

Два очка. Во-первых, floor() возвращает целое число, поэтому cast() является избыточным. Далее, одним из правил нормализации является не сохранение рассчитанных значений. Просто выберите расчет, когда вам это нужно. –

ответ

0

Вы не сделали это уже?

update catalog set zone=CAST(FLOOR(decl) AS INTEGER); 

, если это не сработает, попробуйте сделать это как я присоединиться:

update catalog set zone=CAST(FLOOR(a.decl) AS INTEGER) 
from catalog a 
where 1=1; 

У меня нет экземпляра DB на данный момент, так что вы должны будете проверить это самостоятельно ,

Как другой человек указал, вам действительно не нужно хранить зоны на всех, вы можете просто вернуть его в качестве расчетного значения

select CAST(FLOOR(a.decl) AS INTEGER) as zone 
from catalog a 
where 1=1; 
+0

Что заставляет вас думать, что движок db - это mysql? ОП ничего не указывал. –

+0

В настоящее время я не имею никакого механизма БД, но ответы - довольно общий SQL и должны работать на любой БД с незначительной модификацией. Я исправил свой ответ, чтобы отразить ваш nitpick: -P – vogomatix

+0

вы могли бы рассказать мне, что означает 1 = 1? – user2706760

0

вы хотите сделать что-то вроде этого:

update catalog set zone = CAST(FLOOR(decl) AS INTEGER); 
Смежные вопросы