2012-07-23 71 views
0

我有一个拥有邮寄地址的年轻护理人员的数据库。有时候年轻人有第二次地址取决于他们与谁住在一起。有时需要将信息发送到地址1或地址2或两个地址;我使用组合框来告诉我需要使用哪个地址,即地址1,地址2或两者。我需要一个SQL语句来包含地址1或地址2或使用这两个地址来创建邮件列表

如何编写查询?这是目前的查询,我只是需要它自动插入正确的地址!

SELECT tblYoungCareerDetails.Flagged 
    , tblYoungCarersDetails.FirstName 
    , tblYoungCarersDetails.LastName 
    , tblYoungCarersDetails.Address1 
    , tblYoungCarersDetails.Address2 
    , tblYoungCarersDetails.Address3 
    , tblGeographicalArea.QuarterStarted 
    , tblYoungCarersDetails.[2ndAddress1] 
    , tblYoungCarersDetails.[2ndAddress2] 
    , tblYoungCarersDetails.[2ndAddress3] 
    , tblMailOutList 
    , tblYoungCarersDetails.UseAddressLabel 
FROM (tblYoungCarersDetails 
INNER JOIN tblMailOutDetails 
    ON tblYoungCarersDetails.YoungCarersID = tblMailOutDetails.YoungCarersID) 
INNER JOIN tblGeographicalArea 
    ON (tblMailOutDetails.YoungCarersID) 
    AND (tblMailOutDetails.YoungCarersID = tblGeographicalArea.YoungCarersID) 
WHERE (((tblMailOutDetails.MailOutList)=Yes)); 

这给了我所有的年轻的职业生涯中我的邮件接收细节的服务水平,我现在该如何确保他们得到传递到正确的地址信息?

+2

哪里有关于您需要使用哪个地址的信息?你说过你用'ComboBox'选择它 - ComboBox在哪里,信息在哪里去? – zimdanen 2012-07-23 18:48:34

+0

你有没有试过病例陈述? – Limey 2012-07-23 18:48:48

+1

@Limey Case在MS Access中不可用。 – Fionnuala 2012-07-23 19:01:15

回答

0

您可以选择第一个地址和第二个地址作为联合查询。

SELECT a.* 
    , tblGeographicalArea.QuarterStarted 
    , tblMailOutDetails.MailOutList 

FROM (

(SELECT YoungCarersID 
    , "Select Address1" As WhereFrom 
    , t.Flagged 
    , t.FirstName 
    , t.LastName 
    , t.Address1 
    , t.Address2 
    , t.Address3 
    , t.UseAddressLabel 
FROM tblYoungCarersDetails t 
WHERE t.UseAddressLabel = "Address 1" 
    OR t.UseAddressLabel = "Both" 

UNION 
SELECT YoungCarersID 
    , "Select Address2" As WhereFrom 
    , t.Flagged 
    , t.FirstName 
    , t.LastName 
    , t.[2ndAddress1] 
    , t.[2ndAddress2] 
    , t.[2ndAddress3] 
    , t.UseAddressLabel 
FROM tblYoungCarersDetails t 
WHERE t.UseAddressLabel = "Address 2" 
    OR t.UseAddressLabel = "Both") As a 

INNER JOIN tblMailOutDetails 
    ON a.YoungCarersID = tblMailOutDetails.YoungCarersID) 

INNER JOIN tblGeographicalArea 
    ON tblMailOutDetails.YoungCarersID = tblGeographicalArea.YoungCarersID 
WHERE tblMailOutDetails.MailOutList=Yes 
+0

谢谢,当我明天上班,让你知道的时候会试试!非常感谢你的帮助! – user1546598 2012-07-23 20:54:22

+0

这工作,但它不会拿起查询中的“两个地址”,我想它拿起地址1和地址2,但它只是拿起第一个地址。 – user1546598 2012-07-24 10:04:21

+0

它拾取这两个地址,但是调用相同的名称,这是联合查询的要点。我会做一个小小的改变来证明这一点。 – Fionnuala 2012-07-24 10:10:38