에서 데이터를 선택합니다 나는 두 테이블MySQL의 쿼리 및 두 테이블
taxonomy_index
-nid
-tid
및
url_alias
-source
-alias
내가 소스 'taxonomy/term/' + taxonomy_index.tid
이 url_alias.alias
기록을 찾을 필요가 있고 난 단지 taxonomy_index.nid
에서 데이터를 선택합니다 나는 두 테이블MySQL의 쿼리 및 두 테이블
taxonomy_index
-nid
-tid
및
url_alias
-source
-alias
내가 소스 'taxonomy/term/' + taxonomy_index.tid
이 url_alias.alias
기록을 찾을 필요가 있고 난 단지 taxonomy_index.nid
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}
어느 쪽이 하위 쿼리 또는 조인을 사용하십시오. 하위 쿼리와 :
SELECT alias
FROM url_alias
WHERE source =
(SELECT CONCAT('taxonomy/term/',tid)
FROM taxonomy_index
WHERE nid = ?
)
이 작업을 수행하는 더 효율적인 방법이있을 수 있지만 당신을 위해 그렇게 할 것이 쿼리)
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
그냥 서브 쿼리 혼자 매우 느린 것을 인식하고 특히 CONCAT을 사용할 때 특히 그렇습니다. 그냥 머리가 위로 – DarkMantis