2012-01-29 33 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 

但没有表的实际结构和一些样本数据无法证实出现显示你期待什么了