2015-02-02 6 views
1

enter image description here가입 테이블

post_map.tag_id='1' 부여가, 내가 좋아하는 것이 테이블 가야 내 주요 목표는 mysqli :: multi_query() 또는 mysqli :: query()의 결과로이 테이블을 얻는 것이다. 즉, PHP없이 여러 번 데이터베이스로 이동한다. 이 테이블에는 많은 행이있을 수 있으며이 테이블을 한 번에 가져 오는 것이 훨씬 효율적입니다.

내 시도까지가 :

  • 나는 JOIN 절을 시도했지만 내가 가입 조항에 대한 테이블 이름으로 이전 SELECT의 행 값을 사용하는 방법을 모르겠어요.
  • 준비된 문장이지만 시도 할만한 것을 만들 수 없습니다.

답변

1

IF() 및 JOIN을 통해 수행 할 수 있습니다. 나는 당신을 위해 해결책을 가지고 있는데 ... 아래 쿼리를 실행하십시오 ...

SELECT et.type, 
IF(et.type='resource',r.resource_type_id,NULL) AS resource_type_id, 
IF(et.type='resource',r.value,NULL) AS value, 
IF(et.type='user',u.name,NULL) AS name, 
IF(et.type='link',l.source,NULL) AS source, 
IF(et.type='link',l.count,NULL) AS count 
FROM `post_map` as pm 
JOIN `entity_type` as et ON pm.entity_id = et.id 
LEFT JOIN `resource` as r ON pm.entity_type_id=r.id 
LEFT JOIN `user` as u ON pm.entity_type_id=u.id 
LEFT JOIN `link` as l ON pm.entity_type_id=l.id 
WHERE pm.tag_id='1'