0

私は 2 つのテーブルuser_photosとを持っています。user_annonsを使用して両方からフェッチしjoinます。

各行にuser_annonsは常に一意の ID があり、Id 列は自動インクリメントで、randomkey 列も一意です。

ただし、user_photosテーブルには同じ randomkey 値を持つ複数の行が存在する可能性があり、randomkey 値は と同じuser_annonsです。user_photosテーブルには、自動インクリメントの id 列もあります。

私のコードは次のようになります。

$result = mysql_query("SELECT iname, title, pris 
                        FROM user_annons 
                        JOIN user_photos 
                        ON user_photos.randomkey = user_annons.randomkey 
                        AND user_annons.profile_id='".$profile_id."' 
                        AND user_photos.profile_id='".$profile_id."'");

while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "<a href=\"".$profile_id."/images/".$row2['iname']."\">
    <img src=\"".$profile_id."/images/".$row2['iname']."\"></a>";
    echo $row2['title'];
    echo $row2['pris'];
}

私が欲しいのは、user_annonsテーブル内の最初の一意のランダムキー行とともに、テーブル内の一意のランダムキー値を持つ唯一の行をフェッチすることですuser_photos

ここで、コードは最初に画像を表示し、次に u からのタイトルと価格を表示し、ser_annons次に別の画像を表示しますが、タイトルと価格は同じです。user_annonsこれは、 に 1 つの行があり、同じ randomkey 値を持つuser_annons2 つの行があるためです。user_photos

それで、私を助けることができる人はいますか?

4

2 に答える 2

1

LIMIT 1 を使用

$result = mysql_query("SELECT iname, title, pris 
                        FROM user_annons 
                        JOIN user_photos 
                        ON user_photos.randomkey = user_annons.randomkey 
                        AND user_annons.profile_id='".$profile_id."' 
                        AND user_photos.profile_id='".$profile_id."' LIMIT 1");
于 2012-08-23T07:36:56.070 に答える
0
SELECT 
    ua.iname, 
    ua.title, 
    ua.pris,
    up.profile_id
FROM user_annons as ua
JOIN (select min(id) as up_id , randomkey , profile_id from  user_photos) as up ON up.randomkey = ua.randomkey 
AND ua.profile_id='".$profile_id."' 
AND up.profile_id='".$profile_id."'

MIN() を使用すると最初に一致した行がフェッチされ、MAX を使用すると最後の行がフェッチされます

于 2012-08-23T07:43:27.847 に答える