2017-03-28 4 views
0

Je travaille sur un système .net existant et j'ai une table SQL avec des "offres" effectuées entre deux utilisateurs. Les "offres" vont de deux manières (giggidy) de usertype1 à usertype2 et vice versa. Pour le rendre "simple", il y a un champ "offertype" qui définit la façon dont l'offre se déroule afin que l'utilisateur correct "accepte" l'offre. Assez simple lorsque vous souhaitez l'interroger, vous pouvez exécuter des requêtes assez facilement si vous souhaitez obtenir des données sur une seule offre. Voici mon problème:Sélectionnez l'instruction avec plusieurs conditions conditionnelles

J'essaye de construire une vue qui montre une liste de toutes les offres pour user1. Dans ce point de vue, il devrait afficher toutes les offres de « offertype1 » où user1 est le « offerloginuser » et toutes les offres de « offertype2 » où user1 est le « offerrecipientuser »

offerid offerloginuserid offerrecipientuserid offertype 
1  1     2      1 
2  2     1      2 
3  1     3      1 
4  3     1      2 
5  3     4      2 

Je dois pouvoir voir de OfferID: 1 ; 2; 3; 4 mais pas 5 puisque l'utilisateur 1 n'est pas impliqué. Au premier coup d'œil, il semble assez simple, vous avez des ID utilisateur, le fait est que le concepteur du système a choisi d'utiliser des tables séparées pour les ID utilisateur basés sur usertype, donc je peux avoir deux utilisateurs avec le même ID.

J'ai deux instructions select:

select * from tbl_offers where offertype = 1 and offerloginuserid = 1 

et

select * from tbl_offers where offertype = 2 and offerrecipientid = 1 

Chaque exécuté séparément donne-moi ce que je dois, est-il possible de les rejoindre et de montrer tous les résultats ou dois-je faire une jointure? Je lie ces résultats à une grille DevExpress pour l'affichage à l'utilisateur une fois connecté.

+0

'UNION all' peut aider. – HoneyBadger

Répondre

4

Cela pourrait vous aider?

select * from tbl_offers where (offertype = 1 and offerloginuserid = 1) OR (offertype = 2 and offerrecipientid = 1) 
1

S'il vous plaît essayez ceci: -

select * from tbl_offers 
where offertype in (1,2) and offerrecipientid = 1 
+0

Merci Anup mais vous oubliez qu'il est offerrecipientid pour un type d'offre et offerloginuserid pour un autre type. @etsa a répondu à la question, j'attends juste pour que je puisse l'accepter. – Daniel