2011-11-18 25 views
5

Tôi có thể giới hạn 1 cho một cột cụ thể nhưng không phải là phần còn lại không? Tôi có hai cái bàn. Một với thông tin và một với hình ảnh. Đối với nhiều hình ảnh, có nhiều truy vấn thông tin được chạy. Vì vậy, nó sẽ là 5 hình ảnh và 5 của cùng một tiêu đề. Làm cách nào để có thể giới hạn 1 tiêu đề và LIMIT hình ảnh 3?Truy vấn SELECT, LIMIT 1 cho một cột, nhưng, không phải phần còn lại

$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

bạn có thể vui lòng giải thích nó một cách chi tiết hơn, khó hiểu của nó. – Zohaib

Trả lời

5

bạn có thể nhóm theo tiêu đề và thu thập vị trí hình ảnh bằng GROUP_CONCAT. và sau đó bạn có thể phát nổ các vị trí đã thu thập thành một mảng. và in tất cả các hình ảnh.

đây những gì tôi có nghĩa là

$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

Thats tuyệt vời! Tôi có thể kiểm soát các hình ảnh số không? Nó xuất tất cả các hình ảnh được lưu phù hợp với thông tin. – Graham

+0

Tôi đã sửa đổi một ngắt trong tuyên bố foreach để làm cho nó giới hạn hình ảnh. – Graham

+2

có, bạn có thể giới hạn hình ảnh. có hai cách để giải quyết điều này. đầu tiên, trong php bạn có thể sử dụng thay vì foreach. cách thứ hai, trong sql, là giải pháp thay thế, bạn có thể giới hạn bộ sưu tập bằng hàm SUBSTRING_INDEX, như sau: SUBSTRING_INDEX (GROUP_CONCAT (i.image_loc), ',', 10) có nghĩa là lấy chuỗi từ đầu đến dấu phẩy thứ 10. – ncank

1

Nhóm có hoạt động ở đây không?

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

Điều đó giới hạn 3 hình ảnh của cùng một trang. Nó cũng trùng lặp tiêu đề cho mỗi cái. GROUP BY '$ category'.title LIMIT hoạt động, nhưng chỉ xuất ra một hình ảnh. Tôi đang cố gắng để có được hiệu ứng đó, nhưng với 3 hoặc nhiều hình ảnh. – Graham

+0

Tôi nghĩ trong trường hợp này sau đó nó có ý nghĩa để chạy để tạo ra một thói quen được lưu trữ ... và sử dụng đa truy vấn của mysqli. Ngoài ra, kết quả của bạn lớn đến mức nào? – ansiart

+0

Bất kỳ vị trí nào từ 3 đến 20 hình ảnh. Tôi đã không nghiên cứu chúng. Tôi nhìn vào điều đó mặc dù. – Graham

Các vấn đề liên quan