4

テーブルからデータを取得するために、いくつかのSQLクエリに取り組んでいます。同じデータに対して2つのクエリを実行しましたが、どちらも別の結果になります。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;")

そしてもう1つは

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をフィルタリングしません。2番目の1はAccessで作成されていますが、このクエリをRで実行しようとすると、予期しないシンボルエラーが発生しました。したがって、誰かがPOOL_IDとSentrix_idを指定されたパラメータでフィルタリングするクエリを作成する方法を知っている場合は、事前に感謝します

4

2 に答える 2

1

where句を次のようにする場合ですか。

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

つまり、「OR」コンポーネントの周りに角かっこがあることを確認しますか?

于 2012-06-26T13:16:11.360 に答える
1

多分あなたは意味しました:

 ...
 WHERE data_overview.Sentrix_ID IN (1280307,1416198 )
   AND data_overview.Pool_ID IN ("GS0005701-OPA", "GS0005702-OPA", "GS0005703-OPA" ,"GS0005704-OPA")
   ;                  
于 2012-06-26T15:43:57.507 に答える