[英]Combining rows of multiple queries into one
我正在用PHP和MySQL构建社交媒体新闻聚合Web应用程序。 它需要将各种URL(列URL)映射到特定趋势(列trend_id)。 这是我的虚拟数据结构:
我需要构建一个查询来获取特定趋势ID的URL(例如12)。 这很简单:
在
url_table
选择url
url_table
trend_id
=trend_id
'
现在,某些趋势与特定的父级趋势相关。 例如,trend_id 12、16和45与父趋势_id 12相关。所以这是我的查询:
选择``12''作为
parent_trend_id
,从url_table
WHERE中parent_trend_id
url
(trend_id
=``12''或trend_id
=``16''或trend_id
=``45'')
这是类似查询的另一个示例:
选择``345''作为
parent_trend_id
,从url_table
WHERE中parent_trend_id
url
(trend_id
=``345''或trend_id
=``457''或trend_id
=``16'')
问题在于趋势之间存在多个这样的父子关系。 到目前为止,我在PHP中运行一个for循环并执行多个查询。 同样,鉴于我的应用程序的性质,父级趋势不能成为该表的一部分。 有没有一种方法可以将多个此类查询合并为一个查询?
编辑:
我有一个单独的表来定义
子
关系。 这是一个简单的3列表,具有ID,trend_id(父级)和related_trend_id(子级)。 但是,一个related_trend_id(子代)可以有多个Trend_id(父代)。 这是关系表的快照:
您的特定查询现在将是:
SELECT r.trend_id as parent_trend_id,url
FROM url_table
Join relations r on r.related_trend_id = childid
WHERE r.trend_id = 12
或全部获得
SELECT r.trend_id as parent_trend_id,url
FROM url_table
Join relations r on r.related_trend_id = childid
完全符合我的预期:
http://sqlfiddle.com/#!3/b137a/9
您期待什么结果?
加入包含父子关系的表吗?
SELECT url_table.*
FROM url_table
INNER JOIN parents
ON url_table.trend_id = parents.trend_id
WHERE parents.parent_id IN (1,2,3);
(1,2,3)
是要为其提取元组的所有父级趋势。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.