Как игнорировать записи из таблицы 1 (где fk-refrence должен присутствовать в таблице 2), но когда условие не удовлетворяет - PullRequest
0 голосов
/ 20 июня 2019

мой запрос может показаться простым для большинства из вас, но он меня уже довольно давно зацепил!

table **user**
+----+-------+
| id | name  |
+----+-------+
| 1  | Sanam |
+----+-------+
| 2  | Raj   |
+----+-------+
| 3  | bipul |
+----+-------+

table **msg**
+----+-----------+-----------+
| id | msg       | createdBY |
+----+-----------+-----------+
| 1  | Hi Raj    | 1         |
+----+-----------+-----------+
| 2  | Hi bipul  | 1         |
+----+-----------+-----------+
| 3  | Hi public | 1         |
+----+-----------+-----------+

table **msgToSpecificPeople**
+----+-------+-----------------+
| id | msgId | receiverId      |
+----+-------+-----------------+
| 1  | 1     | 2    --raj id   |
+----+-------+-----------------+
| 1  | 2     | 3    --bipul id |
+----+-------+-----------------+

Теперь я хочу получить вывод, как будто raj - получатель, затем онполучает общедоступное сообщение и 1 его полученное сообщение "Привет, Радж".Я хочу не обращать внимания на "привет, бипуль, сообщения.": также дайте мне знать, как этого добиться в linq

1 Ответ

0 голосов
/ 20 июня 2019

Я думаю, что вы хотите:

select m.*
from msg m
where exists (select 1
              from msgToSpecificPeople tsp
              where m.id = p.msgId and tsp.receiverId = 2
             ) or
      not exists (select 1
                  from msgToSpecificPeople tsp
                  where m.id = p.msgId 
                 );
...