Php 连接和不存在值存在问题
这是我的桌子 使用者 第二张桌子看起来像 纵断面图Php 连接和不存在值存在问题,php,sql,sql-server,Php,Sql,Sql Server,这是我的桌子 使用者 第二张桌子看起来像 纵断面图 Id sender receiver block 1 1 2 True 2 2 3 False 3 4 1 False 我面临的问题是,当我在users表中使用height和weight进行搜索,并使用profileview表进行阻止时,我无法获得正确的结果 如果第二个用户bbb搜索高度为1,重量为10,则应显示第三个用户详细
Id sender receiver block
1 1 2 True
2 2 3 False
3 4 1 False
我面临的问题是,当我在users表中使用height和weight进行搜索,并使用profileview表进行阻止时,我无法获得正确的结果
如果第二个用户bbb搜索高度为1,重量为10,则应显示第三个用户详细信息ccc。第一个用户也匹配,但第一个用户阻止了第二个用户。问题是当我在profileview表中使用连接值时,如果发送方和接收方存在。如果不存在,我们在连接中如何处理..mysql或SQL Server MS?到目前为止你都试了些什么,你在问什么?这也是一个模糊的问题。请从用户a中选择a.*在a.id=b.sender和b.receiver='105'和b.block='False'或nota.id=b.sender和b.receiver='105'上连接配置文件b,其中a.height介于1和65之间我尝试过的这条sql。.现在这两个结果都出来了。.sqlserver MS..这里是一个很好的起点。
CREATE TABLE #Users
(
Id int,
[Name] varchar(255),
Height int,
[Weight] int
)
CREATE TABLE #ProfileView
(
Id int,
Sender int,
Receiver int,
[Block] varchar(5)
)
INSERT INTO #Users
(Id, [Name], Height, [Weight])
VALUES
(1, 'aaa', 1, 10),
(2, 'bbb', 4, 104),
(3, 'ccc', 1, 10),
(4, 'ddd', 56, 150),
(5, 'eee', 232, 180)
INSERT INTO #ProfileView
(Id, Sender, Receiver, [Block])
VALUES
(1, 1, 2, 'True'),
(2, 2, 3, 'False'),
(3, 4, 1, 'False')
DECLARE
@CallingUser int, --User performing the search
@Height int, --Height searched for
@Weight int --Weight searched for
SET @CallingUser = 2
SET @Height = 1
SET @Weight = 10
SELECT
*
FROM
#Users
LEFT OUTER JOIN #ProfileView
ON #Users.Id = #ProfileView.Id
AND #ProfileView.Receiver = @CallingUser
WHERE
#Users.Id <> @CallingUser
AND #Users.Height = @Height
AND #Users.[Weight] = @Weight
AND (#ProfileView.[Block] = 'False' OR #ProfileView.[Block] IS NULL)
DROP TABLE #Users
DROP TABLE #ProfileView
CREATE TABLE #Users
(
Id int,
[Name] varchar(255),
Height int,
[Weight] int
)
CREATE TABLE #ProfileView
(
Id int,
Sender int,
Receiver int,
[Block] varchar(5)
)
INSERT INTO #Users
(Id, [Name], Height, [Weight])
VALUES
(1, 'aaa', 1, 10),
(2, 'bbb', 4, 104),
(3, 'ccc', 1, 10),
(4, 'ddd', 56, 150),
(5, 'eee', 232, 180)
INSERT INTO #ProfileView
(Id, Sender, Receiver, [Block])
VALUES
(1, 1, 2, 'True'),
(2, 2, 3, 'False'),
(3, 4, 1, 'False')
DECLARE
@CallingUser int, --User performing the search
@Height int, --Height searched for
@Weight int --Weight searched for
SET @CallingUser = 2
SET @Height = 1
SET @Weight = 10
SELECT
*
FROM
#Users
LEFT OUTER JOIN #ProfileView
ON #Users.Id = #ProfileView.Id
AND #ProfileView.Receiver = @CallingUser
WHERE
#Users.Id <> @CallingUser
AND #Users.Height = @Height
AND #Users.[Weight] = @Weight
AND (#ProfileView.[Block] = 'False' OR #ProfileView.[Block] IS NULL)
DROP TABLE #Users
DROP TABLE #ProfileView