J'ai 2 tables à joindre d'une manière spécifique. Je pense que ma requête est correcte, mais pas sûre.SQL: 3 auto-jointures, puis les joindre ensemble
select t1.userID, t3.Answer Unit, t5.Answer Demo
FROM
table1 t1
inner join (select * from table2) t3 ON t1.userID = t3.userID
inner join (select * from table2) t5 ON t1.userID = t5.userID
where
NOT EXISTS (SELECT * FROM table1 t2 WHERE t2.userID = t1.userID AND t2.date > t1.date)
and NOT EXISTS (SELECT * FROM table2 t4 WHERE t4.userID = t3.userID and t4.counter > t3.counter)
and NOT EXISTS (SELECT * FROM table2 t6 WHERE t6.userID = t5.userID and t6.counter > t5.counter)
and t1.date_submitted >'1/1/2009'
and t3.question = Unit
and t5.question = Demo
order by
t1.userID
De table1 Je veux userID distincte où date> 1/1/2009
table1
userID Date
1 1/2/2009
1 1/2/2009
2 1/2/2009
3 1/2/2009
4 1/1/2008
donc le résultat que je veux de table1 devrait être ceci:
userID
1
2
3
Je veux alors joindre ceci sur userID avec table2, qui ressemble à ceci:
table2
userID question answer counter
1 Unit A 1
1 Demo x 1
1 Prod 100 1
2 Unit B 1
2 Demo Y 1
3 Prod 100 1
4 Unit A 1
1 Unit B 2
1 Demo x 2
1 Prod 100 2
2 Unit B 2
2 Demo Z 2
3 Prod 100 2
4 Unit A 2
Je veux rejoindre table1 table2 avec ce résultat:
userID Unit Demo
1 B X
2 B Z
En d'autres termes,
choisir userID distinct de table2 où la question = Unité pour le plus haut contre
puis
sélectionnez ID utilisateur distinct de table2 où question = Démo pour le plus haut compteur.
Je pense que j'ai fait 3 auto-jonctions, puis j'ai joint ces 3 ensembles.
Pensez-vous que ce soit vrai?
Qu'est-ce que SGBDR utilisez-vous? – Quassnoi
"Pensez-vous que c'est juste?" - At-il donné la bonne réponse quand vous l'avez couru? – JohnFx
Je pense que ça me donne la bonne réponse, je me demandais juste si vous pouviez voir quelque chose de mal avec ça. Nous sommes en SQL 2005. Merci –