MySQL Query(数据库) - 试图只显示某些值

时间:2012-11-29 22:35:01

标签: php mysql database

你好,我没有什么问题。我的数据库中有两个表。 enter image description here

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

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

感谢您寻求帮助:)

3 个答案:

答案 0 :(得分: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值。

根据您对seeting查询限制/分页的问题,这是通过SQL LIMIT子句完成的。该条款可以用几种不同的方式表达。

这首先只返回最大行数:

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的情况下进行分页,则可能会在多个“页面”中返回相同的行。

答案 1 :(得分:2)

您似乎没有限制部门。 where子句需要一个硬限制,你的位置总是匹配所有内容。另外,你为什么连接你的陈述?它没有破裂。 类似的东西:

$query = mysql_query("SELECT * FROM employees JOIN dept_emp ON employees.emp_no = dept_emp.emp_no WHERE dept_emp.dept_no = 'd007'");

答案 2 :(得分:0)

$dept = ?;
$query = mysql_query("SELECT *
                     FROM employees, dept_emp 
                     WHERE employees.emp_no = dept_emp.emp_no  
                           AND de.dept_no = $dept 
         ");