我的dB中有5个不同的表格,结构为Name|Price|Id..
我有一个独特的价格和Id输入组合。
使用这些2,可能的SQL查询可以获取此条目所在表的名称?
我需要获取此表的名称才能更新Price的价值。
答案 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).
}