如何使用不同表中的数据在MySQL中获取相应记录

3

目前我有一个由PHP生成的日历,可以为用户显示一些节假日信息。该信息存储在数据库中,即 holidaysusers。我希望用户能够选择一个部门,然后使用AJAX只加载该部门用户的假期。

这里有两个结构基本相同的虚构表:

表格users

+------------------------------------+
| User       | Department            |
|------------+-----------------------|
| Brian      | Sales                 |
| Tony       | Marketing             |
| Carol      | Marketing             |
| Dave       | Warehouse             |
| Chris      | Warehouse             |
+------------------------------------+

表格 holiday

+------------------------------------+
| ID         | User                  |
|------------+-----------------------|
| 1          | Dave                  |
| 2          | Tony                  |
| 3          | Tony                  |
| 4          | Chris                 |
| 5          | Carol                 |
+------------------------------------+

我的当前查询:

$getAllHols = $con->query("SELECT * FROM `holiday`");

当然,这只是一个假期问题。我对PHP有足够的了解,可以获取特定部门的用户列表,然后在另一个查询中使用该列表来获取这些用户的假期。但我不想这么做。我认为一定有一个纯SQL解决方案。所以我需要查询所有属于选择部门的用户记录,并使用两个表格。
例如:
如果我选择了“市场营销”部门,则会返回记录2、3和5(Tony和Carol在市场部)。
对于高级SQL用户而言,这是一个非常容易的问题,但对我来说却不是。有人能帮忙吗?谢谢。
3个回答

2

试试这个。

SELECT * FROM users 
LEFT JOIN holiday ON users.user = holiday.user
WHERE holiday.department = 'marketing'

0

就我所知...

select user
from users inner join holiday
on users.user = holiday.user
where department = 'Marketing'

0
如果用户表中有匹配的记录,这将从假期表提供一个不同的记录列表。这比连接表的选项更好,因为您不必担心去重结果数据。
select distinct h.id, h.user
  from holiday h
 where h.user in (select u.user
                    from user u
                   where u.department = 'Marketing')
 ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接