2011-11-28 159 views
0

我试图使用PHP和MySQL来自动生成一个像这样的列表。使用从一个MySQL查询插入到另一个查询

对象#1

  • 资源#3
  • 资源#5
  • 资源#12

受试者#2

  • 资源#7
  • Resourc È#4
  • 资源#1

下面是表:

eresources

  • ERID
  • etitle

个科目

  • SID
  • stitle

subjectmap

  • SID
  • ERID

下面是成功给了我所有的subje代码按字母顺序CTS:

$subjectQuery = "SELECT * FROM subjects WHERE sid != 17 ORDER BY stitle ASC"; 
$subjectResult = $mysqli->query($subjectQuery); 

while ($subjectArray = $subjectResult->fetch_assoc()) { 
print "<h5 class='subcategory'>" . $subjectArray['stitle'] . "</h5>"; 
print "<div class='inner'> 

// Need a list of resources that match each subject ID (sid) here! 

</div>"; 
} 

现在,这里是唯一成功给了我所有的电子资源具有固定主题ID代码:

$getERBySubjectQuery = " SELECT erid FROM subjectmap WHERE sid=11 "; 
$getERBySubjectResult = $mysqli->query($getERBySubjectQuery); 
if($getERBySubjectResult && $getERBySubjectResult->num_rows >= 1){ 
while($getERBySubjectArray = $getERBySubjectResult->fetch_assoc()){ 
     $query = " SELECT * FROM eresources WHERE erid = " .$getERBySubjectArray['erid']. " ORDER BY ertitle ASC "; 
    $result = $mysqli->query($query); 

    if($result && $result->num_rows >= 1){ 
     while($array = $result->fetch_assoc()){ 
      print("<a href=\"" . $array['link'] . "\">" . "<h5 class='subcategory'>" . $array['ertitle'] . "<div class='accessnote'>" . $array['access'] . "</div></h5></a>"); 

}}}} 

当然,我不倾向于复制相同节每个主题ID(sid)。我希望自动生成主题列表以及自动生成主题的资源列表。

基本上我需要从第一节喂sid到每个主题的第二节。

+0

谢谢你们的Frits和Djangofan的回复。非常感激! –

回答

1

通过使用WHERE子句相反,我认为弗里茨面包车坎彭的查询可以更人类可读的,特别是对于初学者:

SELECT subject.stitle, eresource.etitle 
FROM subject,subjectmap,eresource 
WHERE subject.id = subjectmap.sid 
    AND eresource.id = subjectmap.erid 
ORDER BY subject.stitle, eresource.etitle 
1

不执行n+1查询,其中n为主体的数量,您不能这样做在MySQL。

您可以使用JOIN和一些巧妙的排序。

SELECT 
    subject.stitle, eresource.etitle 
FROM subject 
    LEFT JOIN subjectmap ON subject.id = subjectmap.sid 
    LEFT JOIN eresource ON eresource.id = subjectmap.erid 
ORDER BY subject.stitle, eresource.etitle 

你会得到这样一个结果:

+------------+--------------+ 
| stitle  | etitle  | 
+------------+--------------+ 
| Subject #1 | Resource #3 | 
| Subject #1 | Resource #5 | 
| Subject #1 | Resource #12 | 
| Subject #2 | Resource #1 | 
| Subject #2 | Resource #4 | 
| Subject #2 | Resource #7 | 
+------------+--------------+