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>

(इसमें सुधार किया गया है, लेकिन आप इसके साथ शुरुआत कर सकते हैं। मैं mysql के बजाय mysqli का उपयोग कर रहा हूँ)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लारवेल गतिशील ड्रॉपडाउन देश और राज्य

  2. MySQL में भ्रष्ट InnoDB तालिका को सुधारने के सर्वोत्तम तरीके

  3. Eloquent में groupBy का उपयोग करके प्रति समूह अधिक पंक्तियाँ प्राप्त करना

  4. ग्रुप बाय क्लॉज के साथ सशर्त समुच्चय

  5. सभी प्रकार की संभावित भाषाओं का उपयोग करने के लिए मुझे कौन सा COLLATE सेट करना चाहिए?