J'ai une page ASP classique qui permet aux utilisateurs de rechercher des propriétés et une page de résultats qui envoie ensuite un e-mail aux agents immobiliers qui ont des propriétés correspondantes pour les informer de leurs propriétés.Envoyer un e-mail à DISTINCT email
Certains agents peuvent avoir plus d'une propriété, auquel cas l'agent n'a besoin que de recevoir 1 e-mail plutôt qu'un e-mail pour chaque propriété dont ils disposent. Actuellement mon code fait le dernier et j'en ai besoin pour envoyer seulement 1 email à chaque agent.
Dans le code ci-dessous j'ai 2 jeux d'enregistrements; rspropertyresults affiche toutes les propriétés correspondantes, puis j'ai des rsemailagents qui sont utilisés pour rassembler l'adresse email de l'agent et lui envoyer un email.
Je me demandais si quelqu'un pourrait être en mesure de voir comment je peux modifier la requête sql pour rsemailagents pour envoyer 1 email par agent?
<%
[...]
rsemailagents.Source = "SELECT *"
rsemailagents.Source = rsemailagents.Source& "FROM ("
rsemailagents.Source = rsemailagents.Source& " SELECT ContentID"
rsemailagents.Source = rsemailagents.Source& " FROM ("
rsemailagents.Source = rsemailagents.Source& " SELECT ContentID"
rsemailagents.Source = rsemailagents.Source& " FROM VWTenantPropertiesResults"
rsemailagents.Source = rsemailagents.Source& " WHERE ContentStreet = '" & Replace(rsemailagents__varReqStreet, "'", "''") & "'"
rsemailagents.Source = rsemailagents.Source& " UNION ALL"
rsemailagents.Source = rsemailagents.Source& " SELECT ContentID"
rsemailagents.Source = rsemailagents.Source& " FROM VWTenantPropertiesResults"
rsemailagents.Source = rsemailagents.Source& " WHERE ContentTown = '" & Replace(rsemailagents__varReqTown, "'", "''") & "'"
rsemailagents.Source = rsemailagents.Source& " UNION ALL"
rsemailagents.Source = rsemailagents.Source& " SELECT ContentID"
rsemailagents.Source = rsemailagents.Source& " FROM VWTenantPropertiesResults"
rsemailagents.Source = rsemailagents.Source& " WHERE ContentTrimmedPostCode LIKE '" & Replace(varPostcode, "'", "''") & "%'"
rsemailagents.Source = rsemailagents.Source& " ) qi"
rsemailagents.Source = rsemailagents.Source& " GROUP BY"
rsemailagents.Source = rsemailagents.Source& " ContentID"
rsemailagents.Source = rsemailagents.Source& " HAVING COUNT(*) >= 2"
rsemailagents.Source = rsemailagents.Source& " ) q "
rsemailagents.Source = rsemailagents.Source& "JOIN VWTenantPropertiesResults r "
rsemailagents.Source = rsemailagents.Source& "ON r.ContentID = q.ContentID "
rsemailagents.Source = rsemailagents.Source& "WHERE ContentBedrooms BETWEEN " & Replace(rsemailagents__varBedroomsNoMin, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "AND " & Replace(rsemailagents__varBedroomsNoMax, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "AND ContentPrice BETWEEN " & Replace(rsemailagents__varPriceMin, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "AND " & Replace(rsemailagents__varPriceMax, "'", "''") & " " & varSQL & " "
rsemailagents.Source = rsemailagents.Source& "ORDER BY"
rsemailagents.Source = rsemailagents.Source& " ContentPrice " & Replace(rsemailagents__varSortWay, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "GROUP BY CustomerEmail"
[...]
%>
Dans mon code de messagerie, j'ai défini objMail.To comme suit;
objMail.To = (rsemailagents.Fields.Item("CustomerEmail").Value)
Ceci est le code VWTenantPropertiesResults; Lorsque j'exécute cette requête dans la base de données, elle renvoie simplement une colonne CustomerEmail et rien d'autre;
SELECT DISTINCT CustomerEmail
FROM (
SELECT ContentID
FROM (
SELECT ContentID
FROM VWTenantPropertiesResults
WHERE ContentStreet = 'Hull'
UNION ALL
SELECT ContentID
FROM VWTenantPropertiesResults
WHERE ContentTown = ''
UNION ALL
SELECT ContentID
FROM VWTenantPropertiesResults
WHERE ContentTrimmedPostCode LIKE 'HU7'
) qi
GROUP BY
ContentID
HAVING COUNT(*) >= 2
) q
JOIN VWTenantPropertiesResults r
ON r.ContentID = q.ContentID
WHERE ContentBedrooms BETWEEN 1 AND 10 AND ContentPrice BETWEEN 1 AND 10
Peut-être que vous devriez simplement publier l'instruction SQL elle-même et non le code qui l'entoure. Ne pouvez-vous pas lancer le SQL à une procédure stockée ou utiliser quelque chose comme DatabaseSpy pour le tester? –
Pourriez-vous s'il vous plait mettre en ligne la structure de votre tableau? – Quassnoi
Pourriez-vous s'il vous plaît afficher et publier toute la requête qui donne l'erreur? Je veux dire la requête elle-même, pas le code avec lequel elle est générée. – Quassnoi