簡體   English   中英

根據參考表值聯接表

[英]Joining tables based on reference table value

有這些桌子 在此處輸入圖片說明

並給定post_map.tag_id='1' ,我想得到: 在此處輸入圖片說明

entity_type表確定要查找的表,即存儲在哪個表中的entity_id。我的主要目標是獲取此表,作為mysqli :: multi_query()或mysqli :: query()的結果,即不使用PHP返回並返回多次訪問數據庫; 該表可能有很多行,並且一次獲取該表會更有效率。

到目前為止,我的嘗試:

  • 我已經嘗試過JOIN子句,但是我不知道如何使用先前SELECT的行值作為JOIN子句的表名。
  • 嘗試過“准備陳述”,但無法形成任何可用的形式。

可以通過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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM