我有一个eg_design表,其中有以下列:

和具有以下列的eg_domains表:

和具有以下列的eg_fonts表:

现在,基于$domain_id,我想从eg_design表中获取所有数据,从eg_domains表中获取一些数据,从eg_fonts表获取font_name列值,但是在eg_design表中,我在E 116>design_E 217和E 118域字体列上存在两个字体id。
因此,下面的查询应该从表中给出2个font_name,就像在eg_design表上存在2个字体ID一样。
$get_domain = mysqli_query( $mysqli, "SELECT edg.*, ed.domain_name, egf.* 
  FROM eg_design AS edg 
    LEFT JOIN eg_domains AS ed ON edg.domain_id = ed.domain_id 
    LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font AND egf.font_id = edg.domain_font 
  WHERE edg.domain_id = '$domain_id' ");但我觉得这句话
egf.font_id = edg.design_font AND egf.font_id = edg.domain_font以上查询不起作用。
我的意思是,我可以获取所有数据,但无法获得font_name列值。它只返回design_font列值,而不是domain_font列值。
你能帮我修一下吗?
这里是小提琴: https://www.db-fiddle.com/f/mNscdKDNohpT3xidp3C9Mw/0
发布于 2022-06-01 08:58:12
基本上,您只需要离开连接相同的表eg_fonts两次。
见[医]小提琴。您可以尝试以下查询:
$get_domain = mysqli_query( $mysqli, "SELECT edg.*, ed.domain_name, egf.font_name AS design_font_name , egf2.font_name AS domain_font_name
  FROM eg_design AS edg 
    LEFT JOIN eg_domains AS ed ON edg.domain_id = ed.domain_id 
    LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font 
    LEFT JOIN eg_fonts AS egf2 ON egf2.font_id = edg.domain_font 
  WHERE edg.domain_id = '$domain_id' ");改变这一点:
LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font AND egf.font_id = edg.domain_font 对此:
LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font 
LEFT JOIN eg_fonts AS egf2 ON egf2.font_id = edg.domain_font 发布于 2022-06-01 08:33:58
见最新答案
https://www.db-fiddle.com/f/mNscdKDNohpT3xidp3C9Mw/5
SELECT edg.*, ed.domain_name, egf.font_name
FROM eg_design edg 
LEFT JOIN eg_domains ed ON edg.domain_id = ed.domain_id 
LEFT JOIN eg_fonts egf ON egf.font_title = edg.design_font 
WHERE edg.domain_id = 1https://stackoverflow.com/questions/72458295
复制相似问题