簡體   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