1

你好,我有一点问题。我的数据库中有两个表。 在此处输入图像描述

如您所见,我将所有员工都放在一个选项卡中,而我在这里想要实现的是仅在给定选项卡中显示相关员工。因此,例如,来自客户服务的员工不会显示在“销售”选项卡中。

$query = mysql_query("SELECT * "."FROM employees, dept_emp "."WHERE employees.emp_no = dept_emp.emp_no");

感谢您的寻找和帮助:)

4

3 回答 3

3

您的 WHERE 子句是无用的,因为它基本上只是重述 JOIN 条件。试试这个:

SELECT *
FROM employees AS e
INNER JOIN dept_emp AS de ON e.emp_no = de.emp_no
WHERE de.dept_no = '?'

显然,?将替换为dept_no您实际尝试过滤的值。

根据您关于查看查询限制/分页的问题,这是通过 SQLLIMIT子句完成的。该子句可以用几种不同的方式表达。

这首先只返回最大行数:

LIMIT 100 <-- shows first 100 rows from the result set

以下两种形式的语法用于结果的分页:

LIMIT 0, 100 <-- show first 100 rows from the result set (start at 0 offset, and return a max of 100 rows
LIMIT 100, 100 <-- show rows 101-200 from the result set (start at 100 offset and return max of 100 rows)

或者:

LIMIT 100 OFFSET 0 <-- first 100 rows
LIMIT 100 OFFSET 100 <-- rows 101-200

所以把它们放在一起

SELECT *
FROM employees AS e
INNER JOIN dept_emp AS de ON e.emp_no = de.emp_no
WHERE de.dept_no = '?'
ORDER BY e.emp_no
LIMIT 0,100

请注意,我还添加了一个ORDER BY子句。这对于分页很重要,因为常规的无序SELECT并不能保证顺序。如果您尝试在没有分页的情况下进行分页,则ORDER BY可能会在多个“页面”中返回同一行。

于 2012-11-29T22:41:49.303 回答
2

看来您并没有限制部门。where 子句需要一个硬限制,您的 where 将始终匹配所有内容。另外,你为什么要连接你的陈述?它不会破裂。就像是:

$query = mysql_query("SELECT * FROM employees JOIN dept_emp ON employees.emp_no = dept_emp.emp_no WHERE dept_emp.dept_no = 'd007'");
于 2012-11-29T22:42:53.027 回答
0
$dept = ?;
$query = mysql_query("SELECT *
                     FROM employees, dept_emp 
                     WHERE employees.emp_no = dept_emp.emp_no  
                           AND de.dept_no = $dept 
         ");
于 2012-11-29T22:54:39.203 回答