2011-10-26 3 views
1

에서 데이터를 선택합니다 나는 두 테이블MySQL의 쿼리 및 두 테이블

taxonomy_index 
-nid 
-tid 

url_alias 
-source 
-alias 

내가 소스 'taxonomy/term/' + taxonomy_index.tidurl_alias.alias 기록을 찾을 필요가 있고 난 단지 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