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 解决方案。所以我需要查询来使用这两个表从用户在所选部门的假期中获取所有记录。

IE:

如果我选择“市场营销”部门,将返回记录 2、3 和 5。(托尼和卡罗尔在市场营销)。

我敢肯定,对于高级 SQL 用户来说,这是一个非常简单的问题,但对我来说不是。任何人都可以帮忙吗?谢谢。

4

3 回答 3

2

试试这个。

SELECT * FROM users 
LEFT JOIN holiday ON users.user = holiday.user
WHERE holiday.department = 'marketing'
于 2013-02-12T16:36:16.530 回答
0

据我所知...

select user
from users inner join holiday
on users.user = holiday.user
where department = 'Marketing'
于 2013-02-12T16:37:57.380 回答
0

如果用户表中有任何匹配的记录,这将提供假日表中不同的记录列表。这改进了加入表的选项,因为您不必担心对结果数据进行重复数据删除。

select distinct h.id, h.user
  from holiday h
 where h.user in (select u.user
                    from user u
                   where u.department = 'Marketing')
 ;
于 2013-02-12T18:18:20.010 回答