2017-10-13 5 views
0

で表示するプロジェクト名でグループ化された画像をアップロードします。アップロードした最後の画像をmysqlグループの最初の画像ではなく

最初のページには、そのグループの1つのイメージを含むプロジェクト名が表示されます。

画像のグループからアップロードされた最初の画像が表示されます。最後にアップロードされた画像が表示されます。

私のコードは次のとおりです。

$dbhostname="localhost"; 
$dbusername="root"; 
$dbpassword=""; 
$db = "main_name"; 
$dbh = new PDO("mysql:host=$dbhostname;dbname=$db", $dbusername, $dbpassword); 

foreach($dbh->query("SELECT *,COUNT(*) 
FROM images 
GROUP BY project_name ORDER BY img_timestamp DESC") as $row) { 
echo "Project Name: " . $row['project_name']; 
echo "<br>"; 
echo $row['imagelink']; 
} 

参考までに、私のMySQLの表は次のとおりです。

Table name: images 

id  project_name  imagelink  img_timestamp 
1  Travier    image1   (timestamp of upload) 
2  Travier    image2   (timestamp of upload) 
3  Travier    image3   (timestamp of upload) 
4  Travier    image4   (timestamp of upload) 
5  Collosion   image1   (timestamp of upload) 
6  Collosion   image2   (timestamp of upload) 
7  Collosion   image3   (timestamp of upload) 

ヘルプが理解されるであろう:)

答えて

0

あなたはそのためのSUBQUERYMAXを使用することができます。

SELECT id, project_name, COUNT(*), 
MAX(img_timestamp) AS img_timestamp, 
(SELECT imagelink FROM images img WHERE img.project_name = images.project_name ORDER BY img_timestamp DESC LIMIT 1) AS imagelink 
FROM images GROUP BY project_name; 

*を使用すると、名前がimg_timestamp & imagelinkの2つの列になることに注意してください。別の方法では、タイムスタンプとimagelinkに別の別名を使用できます。

+0

解決しませんでした。 –

+0

Duh、明らかにあなたは 'imagelink'を必要とします:-)それについては申し訳ありません、私はクエリを変更します。 –

+0

ありがとう、ありがとう..ありがとうございます:) –

0

以下のクエリを試してみてください。両方のクエリが正常に動作しています。

SELECT * 
FROM images 
WHERE id IN (
    SELECT Max(id) 
    FROM images 
    GROUP BY project_name 
) 

OR 

SELECT * 
FROM images 
WHERE timestemp IN (
    SELECT Max(timestemp) 
    FROM images 
    GROUP BY project_name 
) 
関連する問題