0

次のように、まったく同じ構造を共有する3つのテーブルがあります。

id       name_col

私はこのクエリを持っています:

$query = mysql_query("SELECT * FROM tbl_1 UNION SELECT * FROM tbl_2 UNION SELECT * FROM tbl_3");

今:

while($row = mysql_fetch_array($query)){
    names .= $row['name_col'];
    // HERE HOW I COULD KNOW WHICH TABLE THIS DATA IS COMING FROM?
    // THIS NAME IS FROM tbl_1 OR tbl_2 OR tbl_3
}
4

2 に答える 2

3

さらに、それが属するテーブルの名前を指定するカスタム列を追加できます。

SELECT id, name_col, 'table1' tableName FROM table1
UNION
SELECT id, name_col, 'table2' tableName FROM table2
UNION
SELECT id, name_col, 'table3' tableName FROM table3
于 2013-03-24T10:46:40.793 に答える
2

次のように、サブクエリに定数フィールドを追加して、それらにインデックスを付けることができます。

SQL:

SELECT *, 1 AS tbl ROM tbl_1 
UNION
SELECT *, 2 AS tbl FROM tbl_2 
UNION
SELECT *, 3 AS tbl FROM tbl_3

その追加フィールドの列名は、サブクエリ全体で一貫している必要があります。

PHP:

while($row = mysql_fetch_array($query)){
    names .= $row['name_col'];
    switch ($row['tbl']){
         case 1: // tbl_1
         break;
         // etc.
    }
}
于 2013-03-24T10:49:17.573 に答える