Rajiv.net40 Ответов: 2

Как искать все запросы на добавление в друзья, отправленные в SQL server


Привет друзья,
мне нужна помощь с join in sql. у меня есть 2 таблицы, 1-я-tbl_register, 2-я-запрос.

Tbl_register

UserID 	   f_name	   Designationnm	Comapny_name
1	   aaa	               CEO	           Apple
2	   Rajeev	   General manager	   Dell
3	   upendra	   Managing director	    Dell
4	   soumendr        Vice president	   lenovo
9	   Suneal	  Managing director	   Apple
8	    asa	               CEO	           Apple

request table

req_from_id	req_to_id	req_status
2	           9	           0
3	           9	           0
4	           9	           0
2	           8	           0
2	           1	           0



мне нужно получить такой результат.

f_name       Designationnm   Comapny_name  UserID    req_from_id
aaa  aa             CEO            Apple     1                 2
Rajeev          General manager    Dell      2                 9
Suneal          Managing director  Apple     9             2
asa               CEO              Apple     8             2


Что я уже пробовал:

 select distinct 
tb1.UserID,tb1.f_name,tb1.Designationnm,tb1.Comapny_name,tb2.req_from_id	  
from Tbl_register tb1 
left join
tbl_friend_and_match_request tb2
on 
tb1.UserID = tb2.req_from_id
where 
Comapny_name like '%a%' or Designationnm like '%Manager%'

Rajiv.net40

он работает, но дает дубликаты записей

Graeme_Grant

Пожалуйста, нажмите на виджет" улучшить вопрос " выше и разместите там обновление - его будет нелегко увидеть в разделе комментариев...

Rajiv.net40

есть ли у вас какое-нибудь решение для моего вопроса ?

2 Ответов

Рейтинг:
2

OriginalGriff

Он дает дубликаты, потому что это то, что вы сказали ему сделать.
Если вы измените его так, чтобы он вернулся req_to_id вместо req_from_id тогда понятно почему:

SELECT r.f_name, r.Designationnm, r.Comapny_name, r.UserID, f.req_to_id
  FROM tbl_Register r
  LEFT JOIN tbl_friend_and_match_request f ON f.req_from_id = r.UserID 
where Comapny_name like '%a%' or Designationnm like '%Manager%' 
Потому что в таблице запросов есть три строки, которые соединяются с одной строкой в таблице регистров.
И нет никакого способа, чтобы SQL сам по себе имел хоть какое-то представление о том, какой из них вам нужен!
f_name	Designationnm	Comapny_name	UserID	req_to_id
aaa       	CEO                 	Apple     	1	NULL
Rajeev    	General manager     	Dell      	2	9
Rajeev    	General manager     	Dell      	2	8
Rajeev    	General manager     	Dell      	2	1
Suneal    	Managing director   	Apple     	9	NULL
asa       	CEO                 	Apple     	8	NULL
Ваши таблицы нуждаются в переосмыслении, или вам нужно решить, как SQL должен "выбрать" один из вариантов, когда это произойдет.


Rajiv.net40

Я изменил его на req_to_id, но он по-прежнему показывает все записи

генеральный директор aaa Apple 1 1
Раджив генеральный директор Dell 2 NULL
Suneal управляющий директор Apple 9 9
Suneal управляющий директор Apple 9 9
Suneal управляющий директор Apple 9 9
asa CEO Apple 8 8

OriginalGriff

Да, именно это я и сказал. Вам нужно решить, как SQL должен выбрать "тот", который вы хотите - мы понятия не имеем, как он должен быть выбран, и SQL тоже!

Rajiv.net40

я не знаю, как выбрать один из них.если вы знаете, то скажите мне или любая идея

OriginalGriff

Это ваши данные! Если *вы* не знаете, по каким критериям он должен быть выбран, как вы ожидаете, что я (или SQL) буду иметь какое-либо представление? :смеяться:

Что делает "9 "более подходящим, чем" 8 "или"1"? Вы хотя бы представляете, для чего нужна эта информация, а мы - нет.

Rajiv.net40

мне нужны все пользователи с идентификатором запроса друга в результатах поиска из обеих таблиц.

OriginalGriff

И это то, что вы получаете!

Rajiv.net40

наконец-то я обновил свой quey и для результата, который я искал, но есть проблема только в том, что он равен нулю в req_from_id.

выбрать различные
ТВ1.Идентификатор пользователя,ТВ1.f_name,ТВ1.Designationnm,ТВ1.Comapny_name,ТВ2.req_from_id
из Tbl_register ТВ1
левое соединение
tbl_friend_and_match_request ТВ2
на
ТВ1.Идентификатор пользователя = ТВ2.req_from_id
где
Comapny_name как "%a% "или обозначение как" %Manager%"

OriginalGriff

Кроме...это совсем не то, о чем вы просили. Ни одно из значений в вашем req_from_id не соответствует значениям столбца в вашем примере. Почему? По причинам, которые я привел выше...

Рейтинг:
2

Member 10393746

Выбрать различные
ТВ1.Идентификатор пользователя,ТВ1.f_name,ТВ1.Designationnm,ТВ1.Comapny_name,Макс(ТВ2.req_from_id)
из Tbl_register ТВ1
левое соединение
tbl_friend_and_match_request ТВ2
на
ТВ1.Идентификатор пользователя = ТВ2.req_from_id
где
Comapny_name как "%a% "или обозначение как" %Manager%"
Группа по ТВ1.Идентификатор пользователя,ТВ1.f_name,ТВ1.Designationnm,ТВ1.Comapny_name


Rajiv.net40

не сработал ваш запрос.