![](/img/trans.png)
[英]Using results from one MySQL query in another query in a PHP Envirnment
[英]Using results from one MySQL query to insert into another query
我試圖使用PHP和MySQL自動生成這樣的列表。
主題#1
主題#2
等等
以下是表格:
eresources
主題
subjectmap
以下是按字母順序成功提供所有主題的代碼:
$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從第一節提供給每個主題的第二節。
如果不執行n+1
查詢,則不能在MySQL中執行此操作,其中n
是主題數。
你可以使用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 |
+------------+--------------+
通過使用WHERE子句,我認為Frits van Campen的查詢可能更具人性化,特別是對於初學者:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.