用于过滤数据的SQL查询

时间:2012-06-26 13:00:35

标签: sql r

我正在处理一些SQL查询以从表中获取一些数据;我已经为此做了2次查询 相同的数据但都给出了另一个结果。这两个查询是:

SELECT Samples.Sample,
       data_overview.Sample_Name,
       data_overview.Sample_Group,
       data_overview.NorTum,
       data_overview.Sample_Plate,
       data_overview.Sentrix_ID,
       data_overview.Sentrix_Position,
       data_overview.HybNR,
       data_overview.Pool_ID
FROM tissue INNER JOIN (
                            ( patient INNER JOIN data_overview
                                ON patient.Sample = data_overview.Sample)
                        INNER JOIN Samples ON
                          (data_overview.Sample_id = Samples.Sample_id) AND
                          (patient.Sample = Samples.Sample)
                        ) ON
                        (tissue.Sample_Name = data_overview.Sample_Name)  AND 
                        (tissue.Sample_Name = patient.Sample_Name)
     WHERE data_overview.Sentrix_ID= 1416198
          OR data_overview.Pool_ID='GS0005701-OPA'
          OR data_overview.Pool_ID='GS0005702-OPA'
          OR data_overview.Pool_ID='GS0005703-OPA'
          OR data_overview.Pool_ID='GS0005704-OPA'
          OR data_overview.Sentrix_ID= 1280307
     ORDER BY Samples.Sample;")

另一个是

SELECT Samples.Sample,
       data_overview.Sample_Name,
       data_overview.Sample_Group,
       data_overview.NorTum,
       data_overview.Sample_Plate,
       data_overview.Sentrix_ID,
       data_overview.Sentrix_Position,
       data_overview.HybNR,
       data_overview.Pool_ID
FROM tissue INNER JOIN 
                      (
                         (patient INNER JOIN data_overview 
                               ON patient.Sample = data_overview.Sample)
                          INNER JOIN Samples ON
                              (data_overview.Sample_id = Samples.Sample_id)
                              AND (patient.Sample = Samples.Sample)) ON
                              (tissue.Sample_Name = data_overview.Sample_Name)
                          AND (tissue.Sample_Name = patient.Sample_Name)
          WHERE ((
                    (data_overview.Sentrix_ID)=1280307)
                AND (
                     (data_overview.Pool_ID)="GS0005701-OPA"
                     OR (data_overview.Pool_ID)="GS0005702-OPA"
                     OR (data_overview.Pool_ID)="GS0005703-OPA" 
                     OR (data_overview.Pool_ID)="GS0005704-OPA"))
                     OR (((data_overview.Sentrix_ID)=1416198))
ORDER BY data_overview.Sample;

顶部的那个工作得很好,但它仍然不会过滤sentrix_ID。 第二个1是使用Access创建的,但是当我尝试在R中运行此查询时它给出了 意外的符号错误。因此,如果有人知道如何使用给定的参数创建一个过滤POOL_ID和Sentrix_id的查询,请提前感谢

2 个答案:

答案 0 :(得分:1)

是否将where子句设为这样:

 WHERE Sentrix_ID = 1280307 AND (Pool_ID = 'VAL1' OR Pool_ID = 'VAL2' OR Pool_ID = 'VAL3')

即。确保“OR”组件周围有括号?

答案 1 :(得分:1)

也许你的意思是:

 ...
 WHERE data_overview.Sentrix_ID IN (1280307,1416198 )
   AND data_overview.Pool_ID IN ("GS0005701-OPA", "GS0005702-OPA", "GS0005703-OPA" ,"GS0005704-OPA")
   ;