2011-11-18 75 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