Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tampilkan tiga gambar dari setiap pengguna

Saya tidak tahu apakah ada solusi yang lebih baik, tetapi saya pikir Anda bisa menggunakan ini:

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

Ini akan memilih tiga gambar untuk setiap pengguna. Jika pengguna memiliki kurang dari tiga gambar, itu akan menampilkan nol, jika memiliki lebih banyak, ia memilih tiga di antara semuanya.

Alternatifnya, yang menampilkan tiga gambar masing-masing dalam baris yang berbeda, adalah kueri yang menggunakan variabel:

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: untuk menampilkan tiga gambar untuk setiap pengguna sekaligus saya akan menggunakan kueri pertama saya, dan saya akan mulai dengan beberapa kode seperti ini:

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

(sudah diperbaiki, tetapi Anda bisa memulainya. Saya menggunakan mysqli bukan 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. Jadikan mysql_fetch_assoc secara otomatis mendeteksi tipe data yang dikembalikan?

  2. Bagaimana Cara Membuat Histogram di MySQL?

  3. Laravel - perbarui banyak catatan dengan nilai berbeda

  4. Batas HQL dalam kueri subselect

  5. Penggeser Formulir HTML