2012-01-29 37 views
1

我有一個查詢和一個循環,它列出了在HTML表格中格式化的一個mysql表(「記錄」)中的所有行。從表中獲取值的更好方法,不循環300個查詢

其中一個字段是「subject_id」,它是一個整數。我還有一個名爲「主題」的表,它對應於記錄表中的相同「subject_id」。 「主題」表中只有兩個字段,是主題標題的自動索引ID整數和一個varchar(1024)。

從「records」表中返回的值是一個整數。我想對每行的「records」表中的整數執行查找,以輸出與「subject_id」字段等效的文本。

我的第一個想法,幼稚園的方式,將在循環內引入另一個查詢,有效地將查詢數從300增加到600來加載頁面(不需要分頁)。

除了添加300多個查詢之外,這種「子查詢」的更好方式是什麼?

編輯: 我從表中使用while循環把數據和呼應我的變量$ r_subject(來源:$ r_subject = mysql_result($結果,美元的 「主題」);)。從初始記錄表返回的值是INT。我想獲取$ r_subject,然後根據SUBJECTS表檢查它,以獲取與該INT ID相關聯的字符串名稱。

+0

來自哪裏的數量300的適當的範圍內?你使用'subject_id'匹配'RECORDS'和'SUBJECTS'表之間的行,但你如何從'RECORDS'選擇行? – bdares 2012-01-29 02:40:19

+0

RECORDS表中目前有大約300條記錄。我通過SELECT * FROM'records'來拉它,因爲我使用來自所有字段的數據填充HTML表格。 – muskratt 2012-01-29 02:43:17

回答

0

很難確切地知道你需要什麼而沒有看到代碼,但從我收集的信息來看,你有兩張桌子,一張有ID,另一張有文字,所以你會想用join

第二件事,你會想看看你是否真的需要300個查詢。這是很多的查詢運行,你應該只需要在運行批量插入/更新或其他性質的時候運行那麼多的查詢;除此之外,你很可能會大幅減少這個數字。

+0

最終** JOIN **是我需要學習和處理曲線。謝謝弗朗西斯。 – muskratt 2012-01-31 00:41:20

0
select 
    A.*, 
    B.title 
from 
    records A, 
    subjects B 
where 
    B.subject_id = A.subject_id 

這是一個單一的查詢,將生成您的頁面所需的所有數據。

0
select 
     subjects.SubjectTitle, 
     records.whateverFieldYouWant, 
     records.AnyOtherField 
    from 
     records 
     join subjects 
      on records.subject_id = subjects.subject_id 
    where 
     records.subject_id = TheOneSubjectYouWant 

但沒有表的實際結構和一些樣本數據無法證實出現顯示你期待什麼了