Php 跨表组合mysql查询结果

Php 跨表组合mysql查询结果,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我有两张桌子;在一张表中我有人物信息,在另一张表中我有人物的战斗 为了澄清我的意思: 个人信息 username -------- abc anne hansgerman tester trudiname hoodie gabriel timo marco aharon leandro hans benutzer andreas 战斗 challenger opponent ---------------------- tester hansgerman tester

我有两张桌子;在一张表中我有人物信息,在另一张表中我有人物的战斗

为了澄清我的意思:

个人信息

username
--------
abc
anne
hansgerman
tester
trudiname
hoodie
gabriel
timo
marco
aharon
leandro
hans
benutzer
andreas

战斗

challenger  opponent
----------------------
tester      hansgerman
tester      trudiname

我想要的是,从表1中获取表2中没有提到的测试人员对手的所有人员。

尝试以下查询:

select distinct * from persons 
left join on battles persons.username=battles.opponent 
where battles.opponent is null
试试这个:

select persons.username
from persons, battles
where battles.opponent = persons.username AND battles.challenger != 'tester';
新代码,这将返回persons表中未出现在battles表中的所有用户,以及battles表中没有tester作为挑战者的所有用户

SELECT username 
FROM persons
WHERE NOT EXISTS  
(  
   SELECT username 
   FROM battles 
   where battles.challenger == 'tester' and battles.username == persons.username
)
我想出来了:

SELECT profile.username FROM profile, vs where vs.challenger != "tester" AND vs.oponnent NOT LIKE profile.username

遗憾的是,它不起作用,因为我的英语不好,我把这个专栏称为oponent,而不是opoint,尽管它不起作用。忽略语法错误,
distinct*
要么是矛盾修饰法,要么是重言式,这取决于你的观点。抱歉,我意识到我原来的答案是错误的,现在已经对它进行了编辑。这应该管用!我的想法是,如果用户测试人员已经准备好与他进行挑战,他就不能要求/获得建议,因此只有那些人还没有准备好接受他的建议。我理解。上面的这个查询应该返回所有在战斗表中没有将tester作为挑战者的人的用户名。我错了吗?但是使用此查询时,您需要让battles表中的person allready//where battles.opporter=persons.username///很抱歉,我是新手。您是对的,我的错,我很累:P再次编辑了我的答案!无论如何,谢谢你的努力