2012-01-01 83 views
0

我有一張表,其中包含一系列x個測驗的信息。 它包括ID,名稱,主題和級別的字段。如何使用SQL查詢從表中獲取每條記錄中的一條記錄?

我希望能夠一次獲取所有的科目,所以不能重複的,因爲一些小測驗都會有相同的問題。

我然後去填充一個下拉菜單,這樣的結果,允許用戶用它來過濾他們的搜索結果 - 如果我能!

什麼我堅持上是SQL查詢,我會爲任何建議非常感激,在此先感謝!

+0

需要規範化數據庫模式併爲主題創建單獨的表。而不是在問題表上使用不同的查詢。 – Bruce 2012-01-01 18:46:58

+2

您需要一個單獨的表格主題以使其更容易,然後您描述的表格將subject_id作爲外鍵。您的SQL查詢,然後'SELECT * FROM subjects' – Ben 2012-01-01 18:47:27

+0

謝謝大家對您的回答,DISTINCT方法有效,我也嘗試具有科目單獨的表,但它使我的程序的其他部分有點混亂:對 – Lissy 2012-01-01 20:18:29

回答

1

假設主題是含有像數學或英文的文本字段。

select distinct subject from quizzes 

或爲DB是那個湖不同

select subject from quizzes group by subject 

這是「適當的」但是如果你normalize主題/平到它自己的表,因爲這些信息可能是重複一遍又一遍的每次測驗。

1

distinct是你想要什麼:

select distinct subject from thetable; 

添加order by如果你需要/想。

1

如果你不重複的尋找對象值

SELECT DISTINCT Subject FROM YourTable 
1
SELECT subject FROM tbl GROUP BY subject; 

是否相同,在這種情況下DISTINCT

+0

謝謝,這工作:) – Lissy 2012-01-01 19:17:46

+0

你知道是否有一個快速的方法來計算結果?謝謝:) – Lissy 2012-01-01 19:19:49

+0

@Lissy:'SELECT subject,count(*)AS ct FROM tbl GROUP BY subject;' – 2012-01-01 19:54:20

1

這將帶回一切從subject列,但沒有重複。

SELECT DISTINCT Subject FROM myTableName 

你會發現,你可能會更好有一個單獨的Subject表,而不必在一個大桌子的一切。

+0

非常感謝:) – Lissy 2012-01-01 19:16:39

+0

不客氣! :) – keyboardP 2012-01-01 19:18:54