Wir haben ein CRM-System mit SQL Server und suchen, um alle Kunden mit einer E-Mail-Adresse zu füllen, auch wenn diese E-Mail-Adresse NULL ist.Abhängige Einfügen mit Multi Row Wählen Sie
Es gibt eine Kundentabelle, eine Tabelle für E-Mail-Adressen und eine Linkertabelle.
kann ich eine SELECT
Abfrage für alle Kunden durchführen, die eine neue E-Mail-Reihe benötigen:
SELECT @CompanyId = Comp_CompanyId
FROM Company
WHERE Company.Comp_CompanyId NOT IN (
SELECT ELink_RecordID
FROM EmailLink
)
und ich kann die INSERT
Aussagen führen Sie eine E-Mail-Adresse an einen Kunden hinzuzufügen:
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
)
Gibt es eine Möglichkeit, diese zu einer großen SQL-Anweisung zu kombinieren, ohne ein externes Tool verwenden zu müssen? Ich kann dafür ein schnelles Python-Programm schreiben, aber die Leute, die dies langfristig tun, sind SQL-fokussiert.
Die am weitesten, was ich habe ist die SELECT
mit dem INSERT
für die E-Mail-Kombination, aber konnte nicht herausfinden, wie man dann INSERT
der Linker Reihe:
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
)
Leider nicht. Ich bekomme "Falsche Syntax in der Nähe von 'cteX'." ist zurückgekommen. Außerdem mussten die DECLARE- und EXEC-Zeilen hinzugefügt werden. Das hat nur einen INSERT von den beiden und greift nicht auf die IDs, die von den gespeicherten EXEC-Prozeduren benötigt werden. – Metalshark
Ich habe die Antwort aktualisiert, die falsche Syntax neue CteX wurde aufgrund fehlender Semikolon –
Ich habe noch etwas Arbeit zu tun, um dies funktioniert, aber diese zusätzliche Arbeit wurde nicht durch diese Frage abgedeckt. Ihre Lösung funktioniert für das, was Sie gefragt haben. z.B. muss die gespeicherte Prozedur für jede Iteration "EXEC" ausführen. – Metalshark