在一个SQL中显示两行
我的数据库中有三个表,分别是Equipe(团队)、Match(比赛)、Jouer(比赛),我试图用以下方式显示联赛结果:在一个SQL中显示两行,sql,database,ms-access,select,Sql,Database,Ms Access,Select,我的数据库中有三个表,分别是Equipe(团队)、Match(比赛)、Jouer(比赛),我试图用以下方式显示联赛结果: SELECT DISTINCT M.ID_MATCH, NOM_EQUIPE, BUT_MARQUE FROM EQUIPE AS E, JOUER AS J, [MATCH] AS M WHERE E.ID_EQUIPE = J.ID_EQUIPE and J.ID_MATCH = M.ID_MATCH ORDER BY M.ID_MATCH; 这张桌子是这样的: 装备:
SELECT DISTINCT M.ID_MATCH, NOM_EQUIPE, BUT_MARQUE
FROM EQUIPE AS E, JOUER AS J, [MATCH] AS M
WHERE E.ID_EQUIPE = J.ID_EQUIPE and J.ID_MATCH = M.ID_MATCH
ORDER BY M.ID_MATCH;
这张桌子是这样的:
装备:
匹配:
它们与泰伯焦耳有关:
问题是我得到的结果是这样的:
有没有什么方法可以让结果更像
ID_MATCH , Team1 , result1 , Team2 , result2
试试这个:
诀窍在于在ID_比赛中加入JOUER,但也只有当J2.ID_EQUIPE>J1.ID_EQUIPE时才加入JOUER。这样你只会得到1个团队组合,而不是4个
我希望这有帮助。好机会 在您的表格模式中,
Team1、result1、Team2、result2
是什么意思?在结果中,您可以看到我对两个团队有相同的ID_匹配,我想做的是将两行改为int one@daniel.shih交叉表查询或VBA,我认为因为只有两个团队(在一场比赛中),所以不需要交叉表。有趣的模式并没有强制执行这一点,但我认为现实世界确实如此(OP证实了这一点)。不幸的是,该模式使SQL变得比实际情况更复杂。如果一场比赛包含两支球队各自得分的参考资料和列,那就更好了。我这里有一个解决方案。它应该给你你想要的东西,但我希望你能试驾一下,因为我自己没有数据来测试它。@NidalEl-它在我这边解析得很清楚。你在使用什么数据库?@NidalEl-你早就复制了文本了吗?当我第一次发布这篇文章时,有几分钟我错过了一个“ON”。我几乎立刻抓住了它(并修复了它),因为我在发布后刚刚校对过它。但是如果您在这种状态下复制它,它会给您带来某种语法/解析错误。@NidalEl-自从我上次更新以来,您见过这个解决方案吗?它在我这边有效。如果这对你有帮助,请记住“接受”这个答案。谢谢!
SELECT M.ID_MATCH, E1.NOM_EQUIPE, J1.BUT_MARQUE, E2.NOM_EQUIPE, J2.BUT_MARQUE
FROM JOUER AS J1
INNER JOIN JOUER AS J2 ON J2.ID_MATCH = J1.ID_MATCH and J2.ID_EQUIPE > J1.ID_EQUIPE
INNER JOIN [MATCH] AS M ON J1.ID_MATCH = M.ID_MATCH
INNER JOIN EQUIPE AS E1 ON E1.ID_EQUIPE = J1.ID_EQUIPE
INNER JOIN EQUIPE AS E2 ON E2.ID_EQUIPE = J2.ID_EQUIPE
ORDER BY M.ID_MATCH;