こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ふたつのテーブルを参照してデータを抜き出す方法

ふたつのテーブルを参照してデータを抜き出す方法を教えてください。ふたつのテーブルの構造は同じではありません。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";
}

投稿日時 - 2006-11-12 01:54:09

QNo.2533475

困ってます

質問者が選んだベストアンサー

サブクエリーがつかえればベターですが、つかえなくても
テンポラリをつくればいけるでしょう。

$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";
}

投稿日時 - 2006-11-12 10:54:09

お礼

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

投稿日時 - 2006-11-12 13:59:47

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問