user1 と user2 の 8 つの特定の組み合わせを取得する SELECT クエリが必要です (user2 と user1 の組み合わせも持つ価値があり、冗長ではありません)。「IN」ステートメントは価値があるように見えました。
直接関連する質問。1. "WHERE IN" ステートメントをネストできますか?
- そうでない場合、指定できるようにクエリを最も効果的/最も簡単に構造化するにはどうすればよいですか (user1 と user2 が位置を切り替える 4 つのペアの場合 - 8 つの組み合わせ):
(where user1 = billy AND user2 = sue) OR (where user1 = sue AND user2 =billy) OR (user1 = jack AND user2 = jill) OR (user1 = jill AND user2 = jack)
...etc ?
[この時点で、クエリを実行して関連情報を grep する方が簡単に思えます。]
現在の考え:
sqlite3 -header -separator , some.db "SELECT DISTINCT programquality.time, simscores.user1, simscores.user2, simscores.simscore, programquality.gf, programquality.ga, programquality.pq FROM simscores LEFT JOIN programquality ON programquality.time = simscores.time AND programquality.username = simscores.user1 WHERE programquality.pq IS NOT NULL WHERE simscores.user1 IN ("abraham","billy","carl","dave","ethan","frank","george","harry") WHERE simscores.user2 IN ("abraham","billy","carl","dave","ethan","frank","george","harry");"
これを使用しましたが、関係のないデータが表示されます。
sqlite3 -header -separator , some.db 'SELECT DISTINCT programquality.time, simscores.user1, simscores.user2, simscores.simscore, programquality.gf, programquality.ga, programquality.pq FROM simscores LEFT JOIN programquality ON programquality.time = simscores.time AND programquality.username = simscores.user1 WHERE (simscores.user1 = "billy" OR simscores.user1 = "suzy" OR simscores.user1 = "john") AND (simscores.user2 = "billy" OR simscores.user2 = "suzy" OR simscores.user2 = "john") AND programquality.pq IS NOT NULL AND programquality.time IS NOT NULL;'