2010-08-26 37 views
0

我有如下表:mysql的多表/多實體相關內容查詢

  • magazine_tags
  • news_tags
  • page_tags
  • content_tags
  • faq_tags

它們都具有完全相同的結構:

uid_local - id of the entity 
uid_foreign - id of the tag 

它們中的每一個都映射到PHP中的模型。

我需要基於多個標籤獲取相關內容。假設我正在查看用1和4標記的「常見問題解答」,我需要獲取標記爲1或4的所有項目,但標記爲兩者的項目應位於頂部。

我還需要能夠區分不同的實體,因此我可以在運行查詢後使用PHP中相應的模型加載它們。

我該如何去建立這個查詢?

謝謝!

回答

1

我無法測試它,因爲我的移動,但下面應該做的伎倆:

選擇uid_local,uid_foreign,COUNT(*)作爲頻率在WHERE faq_tags在uid_foreign(1,4)GROUP BY uid_local ORDER BY頻率DESC

+0

這實際上工作正常,但有什麼辦法可以擴展它,所以它一次運行在多個表上? – 2010-08-26 11:14:52

+0

你可以嘗試加入他們或工會選擇。 PS:[ro] cand mai treci prin Bucuresti sa iesim la o bere :) [/ ro] – 2010-08-26 11:37:17

+0

我結束了union和concat的組合:'CONCAT('Model_Class_',uid_local)as uid_local',然後在PHP在處理結果時我會剝離模型類。謝謝! – 2010-08-26 11:46:36