Jag vet inte om det finns en bättre lösning, men jag tror att du kan använda det här:
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
Detta kommer att välja tre bilder för varje användare. Om en användare har mindre än tre bilder kommer den att visa nollor, om den har fler väljer den tre av dem alla.
Ett alternativ, som visar tre bilder var och en i en annan rad, är denna fråga som använder variabler:
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
EDIT: för att visa tre bilder för varje användare åt gången skulle jag använda min första fråga, och jag skulle börja med någon kod så här:
<?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>
(det har förbättrats, men du kan börja med det. Jag använder mysqli istället för mysql)