从所有表中获取所有PRODUCT_TYPE =“cars”

时间:2017-01-07 11:27:42

标签: php mysql pdo

database
==========brand_1(table)

------------------product_1

------------------product_2

==========brand_2(table)

------------------product_1

------------------product_2

所有行结构都有此

ID,PRODUCT_TYPE,PRODUCT_NAME

我被困在这里

$table_sql = "SHOW TABLES";

# get table name
$tables = $connection->_query($table_sql);

while (($table = $tables->fetch(PDO::FETCH_NUM)) !== false)
{
  $fields = $connection->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMN WHERE PRODUCT_TYPE");
  $fields->execute();
}

我的问题如何从所有表中获取所有PRODUCT_TYPE =“汽车”?如果我回显$ tables,我已经显示了表名。我的意图是获取所有表名称1st,然后以某种方式循环并获取所有PRODUCT_TYPE并存储到数组。

我怎么做到的?

1 个答案:

答案 0 :(得分:1)

创建所有表名的数组,在这里找到这个FLAG,并在foreach中创建SQL查询,如:

SELECT COLUMN_NAME FROM brand_1 WHERE PRODUCT_TYPE = 'cars'
UNION
SELECT COLUMN_NAME FROM brand_2 WHERE PRODUCT_TYPE = 'cars'
UNION  ........

foreach like:

$query = '';
foreach (array_of_dbtables as $table)
    $query += ' UNION SELECT COLUMN_NAME FROM ' . $table . ' WHERE PRODUCT_TYPE = "cars" ';

并且您必须为数组中的第一项添加IF,然后您不使用UNION。

欢迎您,如果有助于将答案标记为正确而其他人,那就过得愉快