mysql - SQL - MariaDB 加入问题
问题描述
大家好,我正在处理一些简单的查询(我是菜鸟),并认为我会在这里停下来获得一些有根据的建议。我发布了一个链接,指向我为团队中的父母和球员制作的两张桌子。
我正在尝试编写一个查询,该查询返回父母双方都已注册到系统中的学生。所以它应该显示学生和父母双方。我可以为每个玩家和家长获得 INNER JOIN,但似乎无法将其归结为每个学生 > 1 或 = 2 的家长。
我尝试过使用 Distinct 子句,但也无法使其正常工作。任何帮助都会非常感谢您!
解决方案
用于GROUP_CONCAT()
让父母双方都得到结果。你需要GROUP BY pl_id
为每个玩家排好队。
SELECT pl.pl_fname, pl.pl_lname, pl.pl_id,
GROUP_CONCAT(pa.pa_fname, ' ', pa.pa_lname, ', ', pa.pa_id, ' ', pa.pa_address SEPARATOR '; ') AS parents
FROM Player AS pl
JOIN Parent AS pa ON pl.pl_lname = pa.pl_lname
GROUP BY pl.pl_id
HAVING COUNT(*) > 1
或者,如果您希望每个父级位于单独的行中,请加入一个计算父级数量的查询。
SELECT pl.pl_fname, pl.pl_lname, pl.pl_id, pa.pa_fname, pa.pa_lname, pa.pa_id, pa.pa_address
FROM Player AS pl
JOIN Parent AS pa ON pl.pl_lname = pa.pl_lname
JOIN (SELECT pa_lname FROM parent GROUP BY pa_lname HAVING COUNT(*) > 1) AS pa1
ON pl.pl_lname = pa1.pa_lname
推荐阅读
- sql-server - SQL Server:字符串中金额以上的第一个数字
- java - Android Studio 如何在静态方法中引用活动本身
- php - PHP会话不保存重定向
- powershell - (Powershell) 文本框搜索文本
- python - Microsoft azure devops python 管道失败,Bash 以代码“5”退出
- neo4j - Neo4J Cypher - 如何对列表列表执行 IN 子句操作
- javascript - 为什么我的 html 表单没有通过 ajax 将值返回给 views.py?
- java - 即使在注册和登录时,JWT 也会请求令牌
- python - 删除功能制作问题
- node.js - Discord.js 无法在 Ubuntu 18.04 上播放 mp3 文件