2012-11-29 38 views
1

你好,我沒有什麼問題。我的數據庫中有兩張桌子。 enter image description hereMySQL查詢(數據庫) - 試圖只顯示某些值

正如您所看到的,我將所有員工都集中在一個選項卡中,而我在此嘗試實現的目標是在給定選項卡中僅顯示相關員工。因此,例如,客戶服務的員工不會顯示在銷售選項卡中。

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

謝謝你看並幫助:)

回答

3

你的WHERE子句是無用的,因爲它只是重申一個基本連接條件。試試這個:

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

顯然?將與dept_no值你實際上是想篩選就被取代。

每個關於網站查詢限制/分頁的問題,通過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的情況下進行分頁,您可能會得到在多個「頁面」中返回的同一行。

+0

謝謝大家幫忙這裏,如果你也能告訴我如何限制結果的數量可以說爲100,休息將在接下來的頁面中顯示。爲什麼我問這個問題的原因是因爲我有近300k條目的數據庫,所以當我嘗試加載一個部門時,即使有更多的k個人也不會做任何好事。 –

+0

@MaciejCygan分頁是通過使用'LIMIT'子句完成的。請參閱我更新的答案以獲取更多信息。 –

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'"); 
+0

謝謝你完美的工作:) –

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