Mysql
 sql >> база данни >  >> RDS >> Mysql

Показване на три изображения от всеки потребител

Не знам дали има по-добро решение, но мисля, че можете да използвате това:

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

Това ще избере три изображения за всеки потребител. Ако даден потребител има по-малко от три изображения, той ще покаже нули, ако има повече, той избира три между всички тях.

Алтернатива, която показва три изображения, всяко в различен ред, е тази заявка, която използва променливи:

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

РЕДАКТИРАНЕ: за да покажа три изображения за всеки потребител наведнъж, бих използвал първата си заявка и бих започнал с код като този:

<?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>

(подобрен е, но можете да започнете с него. Използвам mysqli вместо mysql)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Трябва ли да използвам mysql_real_escape_string, ако свързвам параметри?

  2. Колко начина за импортиране на данни в mysql

  3. Грешка SQL заявка:Използвайте метода SUM, когато #1054 - Неизвестна колона 'tbl_customers.id' в клауза Where

  4. Превеждане на атрибути на връзката от ER диаграма в SQL

  5. ALTER TABLE в MySQL:Приятел или враг?