2015-01-08 2 views
0

데이터베이스 테이블 중 하나에 새 열을 추가했습니다. 이전 기록에 해당 열을 채우려고합니다. 새 레코드는 양식을 통해 유효성이 검사됩니다. 다음은 그 예입니다.SQL 인접 셀 값에 따라 셀 값 설정

| Quantity | Description   | Price | Amount | Type | 
---------------------------------------------------------- 
|  3 | Storage for Pallets | 3.99 | 11.97 | NULL | 
|  3 | Handling for Pallets| 3.99 | 11.97 | NULL | 
|  3 | Misc expense  | 3.99 | 11.97 | NULL | 
---------------------------------------------------------- 

설명에있는 키워드를 기반으로 null 값을 바꾸고 싶습니다. 예를 들어 업데이트 된 테이블은 다음과 같습니다.

| Quantity | Description   | Price | Amount | Type  | 
-------------------------------------------------------------- 
|  3 | Storage for Pallets | 3.99 | 11.97 | Storage | 
|  3 | Handling for Pallets| 3.99 | 11.97 | Handling | 
|  3 | Misc expense  | 3.99 | 11.97 | Misc  | 
-------------------------------------------------------------- 

업데이트 계획에 대한 아이디어가 있습니까?

+0

내가 선택한 각 키워드에 대한 추가 진술을 실행해도 상관 없습니다. . 단순하게 유지하고 싶습니다. – ctilley79

+0

테이블에 기본 키가 있습니까? 그것들은 모두 기둥의 일부입니까, 아니면 일부입니까? –

+0

레일 응용 프로그램이며 ActiveRecord는 테이블에 기본 키를 설정하지 않습니다. 상자 밖의 내용은 다음과 같습니다. – ctilley79

답변

0

기본 키가 없으므로 값을 모든 열 값의 where 절에 넣었습니다. 또는 최소한 데이터에 대한 지식을 기반으로 업데이트가 2 개 이상의 행에 도달 할 가능성이 없도록 충분해야합니다. 여기

는 예를 들어 첫 번째 업데이트입니다 :

update tbl 
    set "Type" = 'Storage' 
where "Quantity" = 3 
    and "Description" = 'Storage for Pallets' 
    and "Price" = 3.99 
    and "Amount" = 11.97; 

바이올린 : http://sqlfiddle.com/#!12/9fa64/1/0

기본 키가 있다면, 당신의 절은 훨씬 간단 할 것 WHERE :

where pk_id_field = x 

(정확한 행을 업데이트하려고한다는 것을 안심할 수 있기 때문에, 그리고 내가 생각했던 것보다 간단

0

다른 행이) 그 값이 없다고했다

UPDATE 
    invoice_line_items 
SET 
    line_item_type = "Storage" 
WHERE 
    description like "%storage%"; 

..... 그래서 사실

+1

업데이트가 작동하는 방법은 특정 단어가 포함 된 설명) 전체 테이블에 걸쳐, 그럼 괜찮을 것입니다 –

0

에 : 당신은 항상에 대한 설명의 첫 번째 단어를 원한다면

UPDATE Invoice_Line_Items 
SET line_item_type = SUBSTRING_INDEX(description, ' ', 1); 

SQL Fiddle를 참조와 유형, 당신은 갈 수 있습니다. 물론 전체 테이블에서 직설적이지 않은 경우 WHERE 절을 추가 할 수 있습니다 ... 그리고 첫 번째 단어에만 국한되지 않습니다.

+0

그게 좋겠지 만, 불행히도 내 사용자가 일관된 권자 기대하고있어. – ctilley79

+0

나는 당신의 통제하에있을 것이라는 생각이나 기대했다. 불행. – Abecee