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