php – 我可以在MySQL中为一个表的每一行加入两个只有一个匹配的表吗?

前端之家收集整理的这篇文章主要介绍了php – 我可以在MySQL中为一个表的每一行加入两个只有一个匹配的表吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个表,类和另一个我称之为“课程”的表 – 也就是说,某个特定人在特定地方教授的课程.我想拉一个表,基本上只是根据某些课程参数向我显示哪些类是活动的.例如:

CLASSES
class_id|class_name
--------|------------
       1|Class One
       2|Class Two
       3|Different Class
etc...

COURSES
course_id|class_id|room
---------|--------|--------
        1|       3|       1
        2|       3|       2
        3|       1|       1
        4|       3|       1
        5|       3|       2
        6|       2|       1
etc...

我想知道是否有一种方法可以让我得到像SELECT类.* FROM类JOIN课程ON classes.class_id = courses.class_id WHERE courses.room = 1只返回每个类的一个实例.发生的事情是我只获得了在1号房间发生的课程,但我得到了每个课程的多个实例,因为在课堂1的课程表中有多个该课程的实例.

我已经尝试了所有不同种类的JOIN – 左,右,内等 – 而且因为我是根据另一张桌子的规格拉出来的,所以它们似乎都给了我相同的结果.

所以我得到了:

class_id|  class_name  |course_id|room
--------|--------------|---------|--------
       1|Class One     |        3|       1
       2|Class Two     |        6|       1
       3|Diferent Class|        1|       1
       3|Diferent Class|        4|       1
etc...

但我想得到:

class_id|  class_name  |course_id|room
--------|--------------|---------|--------
       1|Class One     |        3|       1
       2|Class Two     |        6|       1
       3|Diferent Class|        1|       1
etc...

我可以在Classes中的每一行的第一场比赛中只有JOIN吗?我对MysqL很新,所以我在表达我想要做的事情时遇到了一些麻烦;我道歉.

另外:我通过PDO把所有这些都拉到PHP中 – 也许有一种特定的方法可以在PDO中实现这一点?

最佳答案
SELECT
   classes.class_id,classes.name,courses.room
FROM classes
   JOIN courses
      ON classes.class_id=courses.class_id
WHERE courses.room=1
GROUP BY classes.class_id,courses.room

GROUP BY允许您在指定的字段上聚合结果,因此(在本例中)它只需要(classes.class_id,courses.room)的唯一元组

更多细节
http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html

原文链接:https://www.f2er.com/mysql/433361.html

猜你在找的MySQL相关文章