1

質問があります

$STH_1 = $DBH_R->query("SELECT table_name                        
                         FROM information_schema.tables                        
                        WHERE table_name                        
                         LIKE 'v_c_ei\_9%'
                         ");

$stmts_1 = array();

while (($row_1 = $STH_1 -> fetch_assoc()) !== null){
$table_name = $row_1['table_name'];

このクエリの結果は、通常、順番に並べられたテーブルのリストです。

v_c_ei_9001
v_c_ei_9002
...........
v_c_ei_9030

別のテーブル にはv_c_country、 と の 2 つの列がtable_nameありますcountry_name(たとえば、 v_ei_c_9001is Australiav_ei_c_9012isGreat Britainなどのため)。

一般に、結果として、上記のクエリのテーブル (テーブル名) のリストが必要ですが、 ORDER ASC from country names from table で必要v_c_countryです。

クエリを変更するには?

4

2 に答える 2

1
SELECT t.table_name                        
  FROM information_schema.tables AS t
  JOIN v_c_country               AS c ON t.table_name = c.table_name
 WHERE t.table_name LIKE 'v_c_ei\_9%'
 ORDER BY c.country_name ASC;

テストと検証のc.country_nameために、select-list に追加します。

于 2012-05-12T16:47:00.740 に答える
0

あなたはそうしない。MySQL の規則では、データ(テーブルに格納されている国名など) とメタデータ(テーブル名など) を混在させることはできません。

できることは、ストアド プロシージャを使用してステートメントの準備を動的 SQL として悪用することです。これについては、SO で何度も説明されています。

于 2012-05-12T14:02:56.927 に答える