0
우리는 SQL Server를 사용하는 CRM 시스템을 보유하고 있으며 해당 전자 메일 주소가 NULL 인 경우에도 모든 고객에게 전자 메일 주소를 채우려합니다.다중 행 선택이 포함 된 종속 삽입
고객 테이블, 전자 메일 주소 용 테이블 및 링커 테이블이 있습니다.
SELECT @CompanyId = Comp_CompanyId
FROM Company
WHERE Company.Comp_CompanyId NOT IN (
SELECT ELink_RecordID
FROM EmailLink
)
와 내가 고객에게 이메일 주소를 추가 할 INSERT
문을 수행 할 수 있습니다 :
DECLARE @EmailId int
DECLARE @ELinkId int
EXEC @ELinkId = eware_get_identity_id 'Email'
EXEC @EmailId = eware_get_identity_id 'Email'
INSERT INTO Email (
Emai_EmailId,
Emai_CreatedBy,
Emai_CreatedDate,
Emai_UpdatedBy,
Emai_UpdatedDate,
Emai_TimeStamp,
Emai_EmailAddress
)
VALUES (
@EmailId,
1,
GETDATE(),
1,
GETDATE(),
GETDATE(),
NULL
)
INSERT INTO EmailLink(
ELink_LinkID,
ELink_CreatedBy,
ELink_CreatedDate,
ELink_UpdatedBy,
ELink_UpdatedDate,
ELink_TimeStamp,
ELink_EntityID,
ELink_RecordID,
ELink_Type,
ELink_EmailId
)
VALUES(
@ELinkId,
1,
GETDATE(),
1,
GETDATE(),
GETDATE(),
5, -- Person is 13, Company is 5
COMPANY_ID_GOES_HERE,
'Business',
@EmailId
)
나는 새로운 이메일 행을 필요로하는 모든 고객을위한 SELECT
쿼리를 수행 할 수 있습니다 외부 도구를 사용하지 않고 하나의 큰 SQL 문으로 결합 할 수있는 방법이 있습니까? 이를 위해 빠른 파이썬 프로그램을 작성할 수 있지만 장기간 유지하는 사람들은 SQL에 중점을 둡니다.
내가 이메일에 대한 INSERT
와 SELECT
결합되어있어,하지만 알아낼 수없는 먼 어떻게 '에 다음 INSERT
링커 행 :
DECLARE @CompanyId int
DECLARE @EmailId int
DECLARE @ELinkId int
EXEC @ELinkId = eware_get_identity_id 'Email'
EXEC @EmailId = eware_get_identity_id 'Email'
INSERT INTO Email (
Emai_EmailId,
Emai_CreatedBy,
Emai_CreatedDate,
Emai_UpdatedBy,
Emai_UpdatedDate,
Emai_TimeStamp,
Emai_EmailAddress
)
VALUES (
@EmailId,
1,
GETDATE(),
1,
GETDATE(),
GETDATE(),
NULL
)
SELECT @CompanyId = Comp_CompanyId
FROM Company
WHERE Company.Comp_CompanyId NOT IN (
SELECT ELink_RecordID
FROM EmailLink
)
불행히도. 나는 "cteX 근처에 잘못된 구문이 있습니다." 반환되었습니다. 또한 DECLARE 및 EXEC 라인을 추가해야했습니다. INSERT는 둘 중 하나만 있으며 EXEC 저장 프로 시저에서 필요한 ID를 가져 오지 않습니다. – Metalshark
대답을 업데이트했습니다. 잘못된 구문입니다. 새 cteX는 세미 콜론이 누락되어 있기 때문입니다. –
이 작업을 수행하는 데 필요한 작업이 아직 있지만이 추가 작업은이 질문에 포함되지 않았습니다. 귀하의 솔루션은 요구 된 것에 대해 효과가 있습니다. 예 : 각 반복마다 저장 프로 시저를 'EXEC'해야합니다. – Metalshark