2010-11-20 66 views
0

好吧,我試圖結束一個視圖,該視圖從運行在MySQL上的Drupal實例返回一些字段。問題是這樣的信息被分佈在三個表:在MySQL中的多個表中選擇數據

表1(keyword_search_table):包含以下字段:

ID,關鍵詞,DST 示例數據: 1, '雞',「關於我們/弗瑞德 2, '盒', '服務/ patching_stuff'

表2(url_alias):包含以下字段:

PID,SRC,DST 示例數據: 45, '節點/ 22' ,'aboustus/fred' 46, '節點/ 36', 'patching_stuff'

表3(node_revisions):包含以下字段:

NID,標題,挑逗 示例數據:

22,「關於Fred - 我們的總統','弗雷德是一個偉大的人,並已壓迫4年...' 36,'修補你的甲板','修補你的甲板應該使用鐵絲網...「

我' m試圖最終與此:

關鍵字,DESTINATION_URL,標題,teaser_text

例如輸出基於以上數據:

  1. 雞,關於我們/弗雷德,關於弗雷德 - 我們的總統,弗雷德是一個偉大的球員,一直PRES了4年。 ..
  2. 盒,服務/ patching_stuff,修補你的甲板上,修補你的甲板上,應使用鐵絲網做...

即時猜測我需要做一些內部和外部連接左...我在寫這些東西時不好。有任何想法嗎?

回答

0

您無法獲取該數據,因爲url_alias不包含僅nid的pid。 JOIN可以在不同表格中的類似字段上進行。例如,我將從keyword_search_table和node_revisions.title中選擇數據。

 
SELECT keyword_search_table.nid, keyword_search_table.keyword, node_revisions.title, node_revisions.teaser FROM keyword_search_table INNER JOIN ON keyword_search_table.nid = node_revisions.nid; 

如果有NID url_alias(或者你可以肯定,NID = PID)查詢看起來應該是這樣的:

 
SELECT keyword_search_table.nid, keyword_search_table.keyword, node_revisions.title, node_revisions.teaser, url_alias.pid FROM keyword_search_table INNER JOIN ON keyword_search_table.nid = node_revisions.nid INNER JOIN ON url_alias.pid = node_revisions.nid; 
+0

這個非常有意義給我。謝謝Ran!但我知道的一件事是keyword_search_table ID列與PID或NID沒有關係。它是獨立的。該表中的每條記錄都有一個與url_alias表中的URL別名匹配的URL_Alias。 – tonyrocks 2010-11-20 21:40:36

+0

如果keyword_search_table.id不是nid,則必須找到其他鏈接的數據 - 即URL_Alias。查詢應該如下所示: SELECT keyword_search_table.nid,keyword_search_table.keyword,node_revisions.title,node_revisions.teaser,url_alias.pid INNER JOIN ON keyword_search_table.url_alias = url_alias.url_alias INNER JOIN ON url_alias.pid = node_revisions.nid; – 2010-11-20 21:45:27

+0

我不想聽起來愚蠢,但我需要一個從某個地方? – tonyrocks 2010-11-20 21:59:16