SQL查询查找表名

时间:2016-01-05 15:23:58

标签: php mysql

我的dB中有5个不同的表格,结构为Name|Price|Id..

我有一个独特的价格和Id输入组合。

使用这些2,可能的SQL查询可以获取此条目所在表的名称?

我需要获取此表的名称才能更新Price的价值。

3 个答案:

答案 0 :(得分:1)

你真的应该正确地规范你的数据库并使用一个表,但如果你真的需要一个kludge那么:

SELECT name, brand, id, 'Tea' as tablename
  FROM TableTea
 WHERE brand = 'abc'
   AND id = 100
UNION
SELECT name, brand, id, 'Coffee' as tablename
  FROM TableCoffee
 WHERE brand = 'abc'
   AND id = 100
UNION
SELECT name, brand, id, 'Chocolate' as tablename
  FROM TableChocolate
 WHERE brand = 'abc'
   AND id = 100

如果您添加新产品,则必须更改

答案 1 :(得分:0)

如果您的DBMS是MySQL,您可以使用此查询:

SELECT Result.TABLE_NAME FROM (
  SELECT  TABLE_NAME,COLUMN_NAME,COUNT(*) AS QTA FROM INFORMATION_SCHEMA.COLUMNS  
  where  TABLE_SCHEMA = 'NAME_DB'
  and COLUMN_NAME IN ('Name','Price','Id')
  GROUP BY TABLE_NAME
 ) as Result
WHERE Result.QTA = 3

我已经尝试过没有php

将NAME_DB替换为您的数据库。

答案 2 :(得分:0)

您首先需要知道可以输入条目的表格。使用循环迭代这些表并运行查询,每次返回结果集并测试结果集中是否存在记录。这将告诉您哪些表有条目。

一般方法:

$array = array("table1", "table2", "table3", "table4", "table5");
foreach($array as $table) {
    //build your query using the table name
    $query = "SELECT something FROM " .  $table;
    //exec your query against your db and return results
    //test if records exist in result set.  If true, you know the table name based on the loop iteration ($table).
}