dポイントプレゼントキャンペーン実施中!

ふたつのテーブルを参照してデータを抜き出す方法を教えてください。ふたつのテーブルの構造は同じではありません。MySQL 4.0.2x です。

テーブル
entry [ title | id | other ]
sofile [ fileinfo | other | url | other ]

テーブルentryからtitleおよびidフィールドのセットを全レコードからランダムに5個抽出し、
idと同じ数値をfileinfoフィールドに持つレコードのurlフィールドの値をテーブルsofileから抽出し、
titleとurlを出力、ということをさせたいです。

1個のテーブルからランダムに取り出すことはできたのですが、そのランダムの結果を受けて二つ目のテーブルからデータを取り出す方法がわかりません。ご教授いただければ幸いです。

PHPコード
$ck = "SELECT * FROM entry
WHERE status=2 ORDER by rand() LIMIT 5
$entry = mysql_query($ck);
while ($rows = mysql_fetch_array($entry))
{
echo "{$rows["title"]}\n";
echo "{$rows["id"]}\n";
}

A 回答 (1件)

サブクエリーがつかえればベターですが、つかえなくても


テンポラリをつくればいけるでしょう。

$sql =<<<eof
CREATE TEMPORARY TABLE `temp`
SELECT *
FROM `entry`
WHERE status=2
ORDER by rand()
LIMIT 5
eof;
$res = mysql_query($sql);

$sql =<<<eof
SELECT `temp`.`title`,`sofile`.`url`
FROM `sofile`
INNER JOIN `temp` ON `temp`.`id`=`sofile`.`fileinfo`
eof;
$res = mysql_query($sql);

while ($rows = mysql_fetch_array($res))
{
echo "{$rows["title"]}\n";
echo "{$rows["id"]}\n";
}
    • good
    • 0
この回答へのお礼

ばっちりうまく行きました!!
こんなに早く回答がいただけて感激です。
大変ありがとうございました。本当に助かりました。

お礼日時:2006/11/12 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!