MySQL的 - 从在查询时选择从多个表中的行多个表

问题描述:

SELECT语句查找表的名字......然后必要的信息(即headline从那里取回)MySQL的 - 从在查询时选择从多个表中的行多个表

$sql="(SELECT `headline`,`date` FROM `arts`) 

UNION 

(SELECT `headline`,`date` FROM `lead_news`) 

UNION 

(SELECT `headline`,`date` FROM `opinion_analysis`) 

UNION 

(SELECT `headline`,`date` FROM `politics`) 

UNION 

(SELECT `headline`,`date` FROM `top_news`) 

UNION 

(SELECT `headline`,`date` FROM `lifestyle`) 

ORDER BY `date` DESC LIMIT $limit "; 
$result=mysql_query($sql); 
while($row=mysql_fetch_assoc($result)){ 
    echo trim(htmlspecialchars_decode($row['headline'])); 
} 

我还需要找出每个$rowtable名称。我找到了一个解决方案here,建议查询为:

"SELECT *, table_name as source FROM table_name"这样$row['source']可以返回表名。

但我想知道是否有任何关联数组键从$row或mysql中的任何内置函数检索名称?

编辑:我写了下面的方式SELECT命令:

SELECT `headline`,`date`, `arts` as `source` FROM `arts` 

,并得到了错误:未知列“艺术”在“字段列表”。 这里采用什么方式?

+0

投票关闭作为重复的[如何找到表名从图像中随机选择](http://*.com/questions/12544758/how-to-find-the-table-name-which-的图像随机选择的-从)。解决方案就是解决方案。我没有看到你想要达到的目标。 – deceze 2013-03-10 10:31:15

+0

让我访问建议的链接 – 2013-03-10 10:33:01

+2

看起来更像是错误的结构化数据库。不要使用不推荐的mysql调用。 – 2013-03-10 10:33:28

SELECT `headline`,`date`, 'arts' as `source` FROM `arts` 

要选择字符串“艺术”,于是把它放在'引号,而不是反引号。

但是真的,你的餐桌设计好像很差错了。除非所有这些项目都非常不同,否则您应该有一个表,其列category(或类似),而不是每个类别的一个表。

+0

我明白了。非常感谢 – 2013-03-10 11:07:33

+0

其实他们存储新闻项目...每个新闻类别都有自己的表格。 – 2013-03-10 11:09:42

+0

这就是欺骗试图说的。如果他们都是新闻项目,你应该有一个表与新闻项目。添加另一个名为“category”的字段。 – jnovack 2013-03-10 11:46:38