我有一个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 = 1
https://stackoverflow.com/questions/72458295
复制相似问题