Имайте тези таблици
и дадени post_map.tag_id="1"
, Бих искал да получа:
таблицата entity_type определя коя таблица да изглеждаin, т.е. коя таблична entity_id се съхранява. Основната ми цел е да получа тази таблица в резултат на mysqli :: multi_query () или mysqli :: query (), т.е. без PHP да върви напред и назад към базата данни няколко пъти; тази таблица може да има много много редове и да получите тази маса наведнъж би била много по-ефективна.
Моите опити досега:
- Опитах да използвам клаузата JOIN, но не знам как да използвам стойността на реда на предишния SELECT като име на таблицата за клаузата JOIN.
- Опитни подготвени статии, но не могат да формират нищо, което да бъде използвано.
Отговори:
1 за отговор № 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"