我有一个包含10k+行的足球数据库。我的目标是根据他的id选择一个球员,并获得所有其他球员,这些球员在相同的联赛或俱乐部或具有相同的国籍。到目前为止,我的查询如下:
SELECT *
FROM `characteristics`
WHERE `nation` = (SELECT `nation`
FROM `characteristics`
WHERE `id` = "1")
OR `club` = (SELECT `club`
FROM `characteristics`
WHERE `id` = "1")
OR `league` = (SELECT `league`
FROM `characteristics`
WHERE `id` = "1")我认为查询没有像我预期的那样工作,因为它将返回1434行。例如:Nation = Argentina,League = BBVA,Club = FC Barcelona将一起返回一些关于1500+行的信息。
也许你们可以帮助我实现这个子查询。
另一个问题是ZF2中的子查询语法。我在stackoverflow上找到了一些东西,但是我不知道把东西放在哪里的语法。
编辑:数据库数据示例
id firstname lastname age height nation club league
1 Lionel Messi 28 170 cm Argentina FC Barcelona Liga BBVA发布于 2016-05-25 22:30:27
我不能回答关于ZF2的问题,因为我不会使用它。
对于您的SQL问题,我认为您正在寻找以下内容:
SELECT C1.`id` as playerid,
C1.firstname as playerfirstname,
C1.lastname as playerlastname,
C2.*
FROM `characteristics` C1
INNER JOIN `characteristics` C2
ON ( C1.`nation` = C2.`nation` OR
C1.`club` = C2.`club` OR
C1.`league` = C2.`league` )
WHERE C1.`id` = "1"我们的想法是从characteristics (别名C1)检索播放器,然后在您指定的列上再次联接表characteristics (别名C2)。
https://stackoverflow.com/questions/37439405
复制相似问题