Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用不同表中的数据在MySQL中获得适当的记录_Php_Mysql_Sql - Fatal编程技术网

Php 如何使用不同表中的数据在MySQL中获得适当的记录

Php 如何使用不同表中的数据在MySQL中获得适当的记录,php,mysql,sql,Php,Mysql,Sql,我目前有一个PHP生成的日历,为用户显示一些假期。此信息存储在数据库中,即假日和用户。我希望用户能够选择一个部门,然后AJAX将仅为该部门的用户加载假期 以下是两个具有相同基本结构的组合表: 表格用户 +------------------------------------+ | User | Department | |------------+-----------------------| | Brian | Sales

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

以下是两个具有相同基本结构的组合表:

表格
用户

+------------------------------------+
| User       | Department            |
|------------+-----------------------|
| Brian      | Sales                 |
| Tony       | Marketing             |
| Carol      | Marketing             |
| Dave       | Warehouse             |
| Chris      | Warehouse             |
+------------------------------------+
+------------------------------------+
| ID         | User                  |
|------------+-----------------------|
| 1          | Dave                  |
| 2          | Tony                  |
| 3          | Tony                  |
| 4          | Chris                 |
| 5          | Carol                 |
+------------------------------------+
假日

+------------------------------------+
| User       | Department            |
|------------+-----------------------|
| Brian      | Sales                 |
| Tony       | Marketing             |
| Carol      | Marketing             |
| Dave       | Warehouse             |
| Chris      | Warehouse             |
+------------------------------------+
+------------------------------------+
| ID         | User                  |
|------------+-----------------------|
| 1          | Dave                  |
| 2          | Tony                  |
| 3          | Tony                  |
| 4          | Chris                 |
| 5          | Carol                 |
+------------------------------------+
我当前的查询:

$getAllHols = $con->query("SELECT * FROM `holiday`");
所以,当然,这只是得到所有的假期。我对PHP非常了解,可以获得特定部门的用户列表,然后在另一个查询中使用该列表为这些用户获取假期。但我不想这么做。我认为一定有一个纯SQL的解决方案。因此,我需要使用这两个表查询用户所在部门的所有记录

即:

如果我选择了“市场营销”部门,则会返回记录2、3和5。(托尼和卡罗尔从事市场营销工作)

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

试试这个

SELECT * FROM users 
LEFT JOIN holiday ON users.user = holiday.user
WHERE holiday.department = 'marketing'
就我所知

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

如果用户表中有任何匹配的记录,那么这将提供一个与Holiday表不同的记录列表。这改进了连接表的选项,因为您不必担心对结果数据进行重复数据消除

select distinct h.id, h.user
  from holiday h
 where h.user in (select u.user
                    from user u
                   where u.department = 'Marketing')
 ;