我有一个10k +行的足球数据库。我的目标是通过他的身份选择一名球员并获得同一联盟或俱乐部或拥有相同国籍的所有其他球员。 到目前为止,我的查询如下:
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
答案 0 :(得分:0)
关于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
)。