Tôi không biết có giải pháp nào tốt hơn không, nhưng tôi nghĩ bạn có thể sử dụng cách này:
SELECT p1.userID, p1.picture as pic1, p2.picture as pic2, p3.picture as pic3
FROM
pictures p1 left join pictures p2
on p1.userID=p2.userID and p1.picture<>p2.picture
left join pictures p3
on p1.userID=p3.userID and p1.picture<>p3.picture and p2.picture<>p3.picture
GROUP BY p1.userID
Thao tác này sẽ chọn ba hình ảnh cho mỗi người dùng. Nếu người dùng có ít hơn ba hình ảnh, nó sẽ hiển thị rỗng, nếu có nhiều hơn, nó sẽ chọn ba hình ảnh trong số tất cả chúng.
Một giải pháp thay thế, hiển thị ba hình ảnh, mỗi hình ảnh trong một hàng khác nhau, là truy vấn này sử dụng các biến:
SELECT userid, picture
FROM (
SELECT
userid,
picture,
case when @prec_id=userid then @row:[email protected]+1 else @row:=1 end as row,
@prec_id:=userid
FROM
`pictures`,
(SELECT @prec_id:=0, @row:=0) s
ORDER BY userid) s
WHERE row<=3
CHỈNH SỬA: để hiển thị ba hình ảnh cho mỗi người dùng tại một thời điểm, tôi sẽ sử dụng truy vấn đầu tiên của mình và tôi sẽ bắt đầu bằng một số mã như sau:
<?php
$mysqli = new mysqli("localhost", "username", "password", "test");
$image_path = "../images/";
$no_image = "../image/no_image.jpg";
if(!isset($_GET['first'])){
$first = 0;
} else {
$first = (int) $_GET['first'];
}
if ($stmt = $mysqli->prepare("SELECT p1.userID, p1.picture as pic1, p2.picture as pic2, p3.picture as pic3
FROM
pictures p1 left join pictures p2
on p1.userID=p2.userID and p1.picture<>p2.picture
left join pictures p3
on p1.userID=p3.userID and p1.picture<>p3.picture and p2.picture<>p3.picture
GROUP BY p1.userID
LIMIT ?,1")) {
$stmt->bind_param("i", $first);
$stmt->execute();
$stmt->bind_result($user, $pic1, $pic2, $pic3);
$stmt->fetch();
$stmt->close();
}
$mysqli->close();
?>
<div style="position:absolute; top:50px; left:100px; width:800px; text-align: center;">
<img src="<?PHP echo (isset($pic1) ? $image_path.$pic1 : $no_image); ?>" width="176px" height="197px">
<img src="<?PHP echo (isset($pic2) ? $image_path.$pic2 : $no_image); ?>" width="176px" height="197px">
<img src="<?PHP echo (isset($pic3) ? $image_path.$pic3 : $no_image); ?>" width="176px" height="197px">
</div>
(nó đã được cải thiện, nhưng bạn có thể bắt đầu với nó. Tôi đang sử dụng mysqli thay vì mysql)