在这种情况下,我有一个表“ teachers”,其列为(tid,tname)
我有一个表“学生”,其列为(sid,sname)。假设他们有m:n关系,我还有一个表t_s(tid,sid),其中tid和sid分别引用教师的tid和学生的sid。
现在我要查找:老师姓名(带有他们的tid)和每位老师下的学生人数。[不使用Joins或笛卡尔积]

以下查询返回tid计数:

SELECT t.tid, count(*) as numberofstudents
FROM t_s t
GROUPBY by t.tid;


我如何将tname与相应的tid匹配,并尝试使用union:

SELECT t.tid, count(*) as numberofstudents
FROM t_s t
GROUP BY t.tid
UNION
SELECT t1.tid,t1.tname
FROM teachers t1
WHERE t1.tid in (SELECT t2.tid
                FROM t_s t2 )


发现它不起作用,因为列类型不同。

有办法实现吗?
谢谢!

最佳答案

我也很好奇为什么


  不使用Joins或笛卡尔积


但是,您可以尝试以下操作:

SELECT
    t.tid,
    COUNT(*) as numberofstudents,
    (SELECT t1.tname FROM teachers t1 WHERE t1.tid = t.tid) AS tname
FROM t_s t
GROUP BY by t.tid;

关于mysql - 在不使用联接的情况下从具有不同类型的不同表中选择列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42050032/

10-16 07:37