0

こんにちは私は、異なるプレフィックスを持つデータベース内の複数の同一のテーブルをクエリし、結果をランダムに表示したいのですが、どういうわけか、アイテムの出所を追跡する必要があり、方法を理解できませんでした

information_schemaにアクセスできないため、このようなクエリを実行します

$query = "SHOW TABLES FROM mydb WHERE RIGHT( tables_in_mydb, 5 ) = 'table'";
$res = mysql_query($query);
$num = mysql_num_rows($res);

while($row = mysql_fetch_row($res)) {

$numbers = explode('_', $row[0]);

  if($num > 0) {
    $q = "SELECT `this`, `that`, `something` FROM ".$numbers[0]."_idetinticaltables"; // :)
    $r = mysql_query($q);
    while($c = mysql_fetch_array($r)) {
       /*display the results randomly with an identifier where the come from*/
    }
  }
}
4

3 に答える 3

0

ORDER BY RAND() を使用してランダムに並べ替えることができます

于 2012-12-14T14:18:30.697 に答える
0
$aa=array()   
while($c = mysql_fetch_array($r)) 
{
   /*display the results randomly with an identifier where the come from*/
   $aa[]=$c;
}
echo $aa; // print "Array"
于 2012-12-14T14:50:36.030 に答える
0

以下はうまくいくかもしれません:

  1. 関心のあるテーブルのリストを取得します。すでにそれを行っています。
  2. UNION複数のSELECTステートメントの を作成します。各SELECTステートメントは選択元のテーブルによって異なり、列セットをテーブルの名前に追加します (後で識別できるようにします)。

    (SELECT *, TABLENAME = 'first_name_of_table' FROM first_name_of_table ...)
    UNION
    (SELECT *, TABLENAME = 'second_name_of_table' FROM second_name_of_table ...)
    UNION
    ...
    ORDER BY RAND() LIMIT 10;
    
  3. これは、UNION順序全体をランダム化できるためです。MySQL の ORDER BY RAND() 関数を最適化するにはどうすればよいですか?を参照してください。うまくやるのはささいなことではないので、上記の例ではand 句をそこに配置するだけです。テーブルに多くのエントリがあると、サーバーが停止します。ORDER BYLIMIT

于 2012-12-14T16:31:14.877 に答える