繁体   English   中英

将多个查询的行合并为一个

[英]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 urltrend_id =``12''或trend_id =``16''或trend_id =``45'')

这是类似查询的另一个示例:

选择``345''作为parent_trend_id ,从url_table WHERE中parent_trend_id urltrend_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM