[SQL] 업데이트 쿼리 내에서 SELECT를 사용하여
SQL업데이트 쿼리 내에서 SELECT를 사용하여
어떻게 마이크로 소프트 액세스 2007에서 SELECT 쿼리의 결과 테이블의 필드를 업데이트 할 수 있습니다.
다음은 선택 쿼리는 다음과 같습니다
SELECT Min(TAX.Tax_Code) AS MinOfTax_Code
FROM TAX, FUNCTIONS
WHERE (((FUNCTIONS.Func_Pure)<=[Tax_ToPrice]) AND ((FUNCTIONS.Func_Year)=[Tax_Year]))
GROUP BY FUNCTIONS.Func_ID;
그리고 여기에 업데이트 쿼리는 다음과 같습니다
UPDATE FUNCTIONS
SET FUNCTIONS.Func_TaxRef = [Result of Select query]
해결법
-
==============================
1.음, UPDATE 쿼리에 집계를 할 수없는 액세스처럼 보인다. 그러나 SELECT 쿼리에서 집계 할 수 있습니다. 그래서 정의 등으로 쿼리를 만들 :
음, UPDATE 쿼리에 집계를 할 수없는 액세스처럼 보인다. 그러나 SELECT 쿼리에서 집계 할 수 있습니다. 그래서 정의 등으로 쿼리를 만들 :
SELECT func_id, min(tax_code) as MinOfTax_Code FROM Functions INNER JOIN Tax ON (Functions.Func_Year = Tax.Tax_Year) AND (Functions.Func_Pure <= Tax.Tax_ToPrice) GROUP BY Func_Id
그리고 YourQuery로 저장합니다. 이제 우리는 또 다른 액세스 제한을 해결할해야합니다. UPDATE 쿼리는 쿼리에서 작동 할 수 없지만 여러 테이블에서 작동 할 수 있습니다. 그래서이 테이블 만들기 쿼리 테이블에 쿼리를 돌려 보자 :
SELECT YourQuery.* INTO MinOfTax_Code FROM YourQuery
이 매장은 테이블 뷰의 내용이 MinOfTax_Code을했다. 이제 당신은 UPDATE 쿼리를 수행 할 수 있습니다
UPDATE MinOfTax_Code INNER JOIN Functions ON MinOfTax_Code.func_id = Functions.Func_ID SET Functions.Func_TaxRef = [MinOfTax_Code].[MinOfTax_Code]
Access에서 SQL을하는 것은 약간의 신축성, 나는이 프로젝트에 SQL Server Express를 판에 보이는 것입니다!
-
==============================
2.나는 액세스 / JET SQL에 상관 하위 쿼리의 한계 한참의 일부에 대해 쓴 및 SQL 업데이트 여러 테이블을 조인 구문을 지적했다. 그 정보와 빠른 테스트를 기반으로, 나는 하나의 SQL UPDATE 문에 당신이 Access를 사용하여 원하는 / JET를 할 수있는 방법이 생각하지 않습니다. 당신이 할 수 있다면, 문은 다음과 같이 읽을 것입니다 :
나는 액세스 / JET SQL에 상관 하위 쿼리의 한계 한참의 일부에 대해 쓴 및 SQL 업데이트 여러 테이블을 조인 구문을 지적했다. 그 정보와 빠른 테스트를 기반으로, 나는 하나의 SQL UPDATE 문에 당신이 Access를 사용하여 원하는 / JET를 할 수있는 방법이 생각하지 않습니다. 당신이 할 수 있다면, 문은 다음과 같이 읽을 것입니다 :
UPDATE FUNCTIONS A INNER JOIN ( SELECT AA.Func_ID, Min(BB.Tax_Code) AS MinOfTax_Code FROM TAX BB, FUNCTIONS AA WHERE AA.Func_Pure<=BB.Tax_ToPrice AND AA.Func_Year= BB.Tax_Year GROUP BY AA.Func_ID ) B ON B.Func_ID = A.Func_ID SET A.Func_TaxRef = B.MinOfTax_Code
또한, 액세스 / JET 때로는 별도의 쿼리와 하위 쿼리를 저장 한 후 전통적인 방법으로 UPDATE 문에 합류와 함께 도망하게됩니다. 그래서, 예를 들어, 우리는 별도의 쿼리가 FUNCTIONS_TAX라는 이름으로, 다음 UPDATE 문이 될 것입니다 위의 SELECT 하위 쿼리를 저장 :
UPDATE FUNCTIONS INNER JOIN FUNCTIONS_TAX ON FUNCTIONS.Func_ID = FUNCTIONS_TAX.Func_ID SET FUNCTIONS.Func_TaxRef = FUNCTIONS_TAX.MinOfTax_Code
그러나이 여전히 작동하지 않습니다.
나는 당신이이 일을 할 수있는 유일한 방법은 대역 최소 Tax_Code 값의 선택과 집계를 이동하는 것입니다 생각합니다. 당신은 접근을 DLookup 기능을 사용하여 더 쉽게 VBA 기능이 작업을 수행, 또는 수 있습니다. 별도의 쿼리 이름 FUNCTIONS_TAX에 위의 하위 쿼리하여 그룹을 저장하고 UPDATE 문을 다시 작성 :
UPDATE FUNCTIONS SET Func_TaxRef = DLookup( "MinOfTax_Code", "FUNCTIONS_TAX", "Func_ID = '" & Func_ID & "'" )
참고을 DLookup 기능은 제트 OLEDB를 통해 인스턴스에 대한 액세스의 사용 외부 인에서이 쿼리를 방지 함. 또한,이 방법의 성능에 따라 꽤 끔찍한 얼마나 많은 행 서브 쿼리가 순서대로 요점 물론, 그것은 더 이상 상관 관계 때문에 각 기능 행 (위해 실행되는대로 타겟팅 )가 작동하려면.
행운을 빕니다!
-
==============================
3.나는 비슷한 문제가 있었다. 나는 하나 개의 컬럼에 문자열을 찾을 원과 같은 테이블의 다른 열에서 그 값을 넣습니다. SELECT 문 아래의 괄호 안의 텍스트를 찾습니다.
나는 비슷한 문제가 있었다. 나는 하나 개의 컬럼에 문자열을 찾을 원과 같은 테이블의 다른 열에서 그 값을 넣습니다. SELECT 문 아래의 괄호 안의 텍스트를 찾습니다.
내가 Access에서 쿼리를 만들 때 나는 모든 필드를 선택했습니다. 그 쿼리에 대한 SQL보기에, 나는 내가 괄호와 내부에서 값을 가지고 싶었던 필드의 mytable.myfield 교체
SELECT Left(Right(OtherField,Len(OtherField)-InStr((OtherField),"(")), Len(Right(OtherField,Len(OtherField)-InStr((OtherField),"(")))-1)
나는 테이블 만들기 쿼리를 실행했습니다. 만들기 테이블 쿼리는 MYTABLE FROM INTO NameofNewTable와 위의 대체 및 끝 모든 필드가
-
==============================
4.이 일을합니까? 안된하지만에 걸쳐 요점을 파악해야한다.
이 일을합니까? 안된하지만에 걸쳐 요점을 파악해야한다.
UPDATE FUNCTIONS SET Func_TaxRef = ( SELECT Min(TAX.Tax_Code) AS MinOfTax_Code FROM TAX, FUNCTIONS F1 WHERE F1.Func_Pure <= [Tax_ToPrice] AND F1.Func_Year=[Tax_Year] AND F1.Func_ID = FUNCTIONS.Func_ID GROUP BY F1.Func_ID; )
기본적 FUNCTIONS의 각 행에 대해, 서브 쿼리는 최소 전류 세금 코드를 결정하고, 그 값으로 설정 FUNCTIONS.Func_TaxRef. 이 FUNCTIONS.Func_ID가 기본 또는 고유 키라고 가정한다.
-
==============================
5.나는 VBA 기능을 활용 한 번 더 대답을 추가 할 않았다, 그러나 그것은 하나의 SQL 문에서 작업을 완수한다. 비록, 그것은 속도가 느려질 수 있습니다.
나는 VBA 기능을 활용 한 번 더 대답을 추가 할 않았다, 그러나 그것은 하나의 SQL 문에서 작업을 완수한다. 비록, 그것은 속도가 느려질 수 있습니다.
UPDATE FUNCTIONS SET FUNCTIONS.Func_TaxRef = DLookUp("MinOfTax_Code", "SELECT FUNCTIONS.Func_ID,Min(TAX.Tax_Code) AS MinOfTax_Code FROM TAX, FUNCTIONS WHERE (((FUNCTIONS.Func_Pure)<=[Tax_ToPrice]) AND ((FUNCTIONS.Func_Year)=[Tax_Year])) GROUP BY FUNCTIONS.Func_ID;", "FUNCTIONS.Func_ID=" & Func_ID)
-
==============================
6.이 주제는 오래 알고,하지만 난 그것에 무언가를 추가 할 수 있습니다 생각했다.
이 주제는 오래 알고,하지만 난 그것에 무언가를 추가 할 수 있습니다 생각했다.
나는이 작품을 만들기 위해 Tomalak의 제안을 사용하여 액세스 2010 MS에서 SQL을 사용하여 선택 쿼리 작업과 업데이트를 만들 수 없습니다. 나는 스크린 샷을했지만, 그것을 게시 할 수 있도록 분명히이 사이트에 newb 너무 많이입니다.
나는 쿼리 디자인 도구를 사용하여이 작업을 수행 할 수 있었다, 그러나 나는 확인 된 성공적인 업데이트 쿼리에서보고 된 것 같이, 액세스 나에게 일어날 만든 SQL을 표시 할 수 없습니다. 그래서 나 혼자 SQL 코드와 함께이 작품을 만들 수 없습니다.
내가 만든 별도의 쿼리로 내 선택 쿼리를 저장. 쿼리 디자인 도구에서 나는 (그 사이에 연결을했다, 그래서 나는 선택 쿼리에 고유 키를 넣어) 내가 저장 한 선택 쿼리를 업데이트하기 위해 노력하고있어 테이블을 추가했습니다. Tomalak 제안했던 것처럼, 나는 업데이트 할 수있는 쿼리 유형을 변경했습니다. 그때 그냥 필드를 선택 (테이블을 지정) I 업데이트려고했다. "업데이트하려면"필드에서, 나는에서 가져온 선택 쿼리에서 필드의 이름을 입력했습니다.
이 형식은 성공하고 원래의 테이블을 업데이트.
from https://stackoverflow.com/questions/871905/use-select-inside-an-update-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] EF 핵심 엔티티 테이블 구조를 참조 카테고리 부모 ID 자체지도 (0) | 2020.05.13 |
---|---|
[SQL] 기본 키 위반 오류 후 거래를 계속 (0) | 2020.05.13 |
[SQL] 사용 된 SELECT 문은 열을 다른 수 있습니다 (REDUX를!) (0) | 2020.05.12 |
[SQL] 배쉬 스크립트는 MySQL의 값을 삽입 (0) | 2020.05.12 |
[SQL] PHP에서 날짜 형식으로 ISO8601를 변환하는 방법 (0) | 2020.05.12 |