[英]Displaying MySQL data from several tables using PHP while loops
經過幾周的研究,我無法解決此問題。 我簡化了表結構和代碼,希望可以簡化此過程。
我有兩個MySQL表; “塊”和“文件”。
“塊”表具有列bwblock_id,bwblock_year和bwblock_name。
“文件”表具有列file_id,file_name和bwblock_id。
用戶首先創建一個塊。 然后他們可以創建一個文件,並將其分配給一個塊(bwblock_id是索引列)。
然后,我想顯示如下內容:
塊名稱1(來自bwblock_name列中的數據)
[未分配文件,僅顯示塊名稱]
塊名#2
分配給塊#2的第一個文件
分配給塊#2的第二個文件
塊名#3
分配給第3塊的第一個文件
分配給第3塊的第二個文件
等等...
我下面的代碼顯示了我需要的所有內容,但列出了第一個塊下的文件,而不是它實際所屬的第三個塊。 如何分配文件以在正確的塊下顯示? 顯然,它與將block.bwblock_id和files.bwblock_id排列在一起有關,但我只是不知道那是什么。
我已經嘗試了LEFT JOIN語句,但是下面的MySQL是我得到所需的最接近的MySQL。
我首先選擇塊數據:
$query_RS_Blocks = "SELECT * FROM blocks WHERE bwblock_year = $variable ORDER BY bwblock_id ASC"
$row_RS_Blocks = mysql_fetch_assoc($RS_Blocks);
然后,選擇適用的文件:
"SELECT * FROM files WHERE bwblock_id IN (SELECT bwblock_id FROM blocks WHERE bwblock_year = $variable) ORDER BY file_name ASC"
$row_RS_Files = mysql_fetch_assoc($RS_Files);
我精簡的PHP顯示代碼是:
do {
echo $row_RS_Block['block_name'];
do {
echo $row_RS_Files['file_name'];
}
while ($row_RS_Files= mysql_fetch_assoc($RS_Files));
}
while ($row_RS_Blocks = mysql_fetch_assoc($RS_Blocks));
我也嘗試將最后一行更改為:
while (($row_RS_Blocks = mysql_fetch_assoc($RS_Blocks)) && ($row_RS_Blocks['bwblock_id'] == $row_RS_Files['bwblock_id']));
然后,我將第一個文件插入第一個塊下,將第二個文件插入第二個塊下。 (請注意,在該特定文件查詢中僅返回了兩個文件。我想它將為每個塊無限分配一個文件。)
我的頭腦現在有些糊塗,但是如果我省略了任何必要的信息,請告知我,我將盡快進行修改。
您可以嘗試這種選擇嗎? 讓我知道是否可行。
SELECT b.bwblock_id, b.bwblock_year, b.bwblock_name, f.file_id, f.file_name
FROM blocks AS b
LEFT JOIN files as f
ON b.bwblock_id=f.bwblock_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.