2011-10-26 53 views
1

選擇數據我有兩個表MySQL查詢,並從兩個表

taxonomy_index 
-nid 
-tid 

url_alias 
-source 
-alias 

我需要找到url_alias.alias記錄具有源'taxonomy/term/' + taxonomy_index.tid我只有taxonomy_index.nid

回答

4
SELECT url_alias.alias 
    FROM url_alias, taxonomy_index 
WHERE url_alias.source = CONCATENATE('taxonomy/term/', taxonomy_index.tid) 
    AND taxonomy_index.nid = {given_nid} 
1

無論是使用子查詢或聯接。使用子查詢:

SELECT alias 
FROM url_alias 
WHERE source = 
(SELECT CONCAT('taxonomy/term/',tid) 
    FROM taxonomy_index 
    WHERE nid = ? 
) 
+0

要知道,子查詢單是很慢,特別是當你使用CONCAT時。只是一個頭 – DarkMantis

1

這個查詢會爲你做的,雖然有可能做到這一點更有效的方式;)

SELECT 
    T.nid 
    ,U.* 
FROM 
    url_alias AS U 
    INNER JOIN (
    SELECT 
     nid 
     ,CONCAT('taxonomy/term/', tid) AS `alias` 
    FROM 
     taxonomy_index) AS T 
    ON 
    U.alias = T.alias