2011-11-18 77 views
5

我可以限制1個特定列,但不是其他列嗎?我有兩張桌子。一個與信息和一個與圖像。對於儘可能多的圖像,許多信息查詢都會運行。所以,這將是5張圖片和5個相同的標題。我如何限制1個標題和限制3個圖像?SELECT查詢,列1的限制1,但不是其他列的

$query = mysql_query(" 
        SELECT `$category`.title AS title, 
        page_images.image_loc AS images 
        FROM `$category`, page_images 
        WHERE `$category`.title = page_images.title 
        "); 

      while($fetch = mysql_fetch_assoc($query)) { 

       $title = $fetch['title'];    
       $images = $fetch['images']; 

       echo '<b>'.$title.'</b><br />'; 
       echo '<a href="http://localhost/'.$images.'"> 
         <img src="http://localhost/'.$images.'" height="80" width="80" /> 
         </a>'; 

       } 
+0

能否請您詳細,其混亂的解釋。 – Zohaib

回答

5

您可以按標題分組並使用GROUP_CONCAT收集圖像位置。然後你可以將收集到的位置分解爲一個數組。並打印所有圖像。

這裏我的意思

$query = mysql_query(" 
SELECT 
    title AS title 
    ,GROUP_CONCAT(i.image_loc) AS images 
FROM 
    `$category` c 
    JOIN page_images i USING(title) 
GROUP BY 
    title 
"); 

while($fetch = mysql_fetch_assoc($query)) { 
    $title = $fetch[ 'title' ];    
    $images = explode(',', $fetch[ 'images' ]); 

    echo '<b>' . $title . '</b><br />'; 
    foreach($images as $image) { 
     echo '<a href="http://localhost/'.$image.'"> 
      <img src="http://localhost/'.$image.'" height="80" width="80" /> 
     </a>'; 
    } 
} 
+0

多數民衆贊成真棒!我可以控制數字圖像嗎?它輸出保存的所有匹配信息的圖像。 – Graham

+0

我修改了foreach語句中的一箇中斷,使其限制圖像。 – Graham

+2

是的,你可以限制圖像。有兩種方法可以實現這一點。首先,在PHP中,您可以使用而不是foreach。第二種方法,在SQL中,作爲解決方法,可以使用SUBSTRING_INDEX函數來限制集合,如下所示:SUBSTRING_INDEX(GROUP_CONCAT(i.image_loc),',',10)這意味着從第10個逗號開始獲取字符串。 – ncank

1

會在這裏工作嗎?

SELECT `$category`.title AS title, 
    page_images.image_loc AS images 
FROM `$category`, page_images 
WHERE `$category`.title = page_images.title 
GROUP BY title, images 
LIMIT 3 
+0

這限制了同一頁面的3張圖片。它也重複每個標題。 GROUP BY'$ category'.title LIMIT有效,但只輸出一個圖像。我試圖得到這種效果,但有3個或更多的圖像。 – Graham

+0

我認爲在這種情況下,運行創建一個存儲的例程是有意義的......並使用mysqli的多重查詢。另外,你的結果集有多大? – ansiart

+0

任何地方從3到20個圖像。我沒有研究過這些。儘管如此,我仍然期待着。 – Graham