3

同じ名前で最後に異なる番号を持つすべてのテーブルに対して動的ユニオンクエリを作成できるかどうか疑問に思っていました。システムを作成しましたが、各ユーザーには次のような独自のテーブルがあります。

user_table_$userID

私はこれを PHP で達成しましたが、もっと動的なコードを作成したいと思っています。現在、Web サーバーやデータベースに負担をかけずに各テーブルから投稿を取得するために、2 ~ 3 個のネストされたクエリがあります。

ユーザー ログイン テーブル内のユーザー数をカウントし、for ループを作成できると思います。

for ($i = 1; $i >= $usrCount; $i++)
{
    $queryArray[] = "(SELECT post_title, post_description FROM user_table_" . $i . ") UNION";
}

ただし、ユーザー数が非常に多い場合、PHP スクリプトの読み込みに時間がかかる可能性があります。= "user_table_%" のような名前のテーブルに基づいて動的クエリを作成するように Mysql データベースを取得する方法はありますか?

何か提案があれば、私に知らせてください。

ありがとうございました。

4

6 に答える 6

0

フィールドuser_tableを含むテーブルを 1 つだけ持つ必要があるようです。user_id

現在のモデルを維持したいが、クエリを作成するために MySQL が必要な場合は、次のようにすることができます。

SHOW TABLES LIKE "user_table_%";

一時テーブルを作成し、テーブルINSERT SELECTごとに実行します。

しかし、繰り返しになりますが、控えめに言ってもほとんどお勧めできません

于 2013-04-17T10:32:25.877 に答える
0

これはうまくいくはずです(ただし、「データベースの正規化」を検討してください)

for ($i = 1; $i >= $usrCount; $i++){
  $queryArray[$i] = "(SELECT post_title, post_description FROM user_table_".$i.")";
}    
$sql = implode(' UNION ', $queryArray);
于 2017-01-06T01:40:19.563 に答える