MySQL从多个表中获取数据
P粉092778585
P粉092778585 2024-04-06 18:42:44
0
2
640

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

eg_domains 表,其中包含以下列:

eg_fonts 表,其中包含以下列:

现在,基于 $domain_id 我想获取 eg_design 表中的所有数据、eg_domains 表中的一些数据以及 eg_fonts 表中的 font_name 列值但是eg_design表中,我在design_fontdomain_font列上存在2个字体ID。

因此,下面的查询应该从 eg_fonts 表中为我提供 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

P粉092778585
P粉092778585

全部回复(2)
P粉098417223

查看更新的答案

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
P粉116654495

基本上,您只需左连接同一个表 eg_fonts 两次即可。

请参阅 dbfiddle 。您可以尝试以下查询:

$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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板