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再次编辑了我的答案!无论如何,谢谢你的努力