Mysql 使用多个联接的未知列

Mysql 使用多个联接的未知列,mysql,sql,wordpress,Mysql,Sql,Wordpress,我想把两张桌子连在一起两次。一个有不同的行,另一个有不同的行,但我得到下面的错误 #1054 - Unknown column 'p1.ID' in 'on clause' MySQL: SELECT p1.ID, p1.post_title, p1.post_excerpt, p2.meta_value, p1.guid, p4.guid FROM wp_posts AS p1, wp_postmeta AS p3 INNER JOIN wp_postmeta p2

我想把两张桌子连在一起两次。一个有不同的行,另一个有不同的行,但我得到下面的错误

#1054 - Unknown column 'p1.ID' in 'on clause'
MySQL:

SELECT p1.ID, p1.post_title, p1.post_excerpt, p2.meta_value, p1.guid, p4.guid
FROM wp_posts AS p1, wp_postmeta AS p3
    INNER JOIN wp_postmeta p2
        ON p1.ID = p2.post_id 
        AND p2.meta_key = '_price'
        AND p1.post_type = 'product'
        AND p1.post_status = 'publish'
    INNER JOIN wp_posts p4
        ON p4.ID = p3.post_id 
        AND p3.meta_key = '_thumbnail_id'
        AND p4.post_type = 'attachment'
编辑:下面是我在回答后的查询,但它给了我一个空表

SELECT p1.ID, p1.post_title, p1.post_excerpt, p2.meta_value, p1.guid, p3.guid
FROM wp_posts p1 
     JOIN wp_postmeta p2
     ON p1.ID = p2.post_id AND
        p2.meta_key = '_price' AND
        p1.post_type = 'product' AND
        p1.post_status = 'publish' 
     JOIN wp_posts p3
     ON p3.ID = p2.post_id AND 
        p2.meta_key = '_thumbnail_id' 
     JOIN wp_postmeta p4
     ON p4.post_id = p3.ID AND
        p3.post_type = 'attachment';
切勿在
FROM
子句中使用逗号。始终使用显式
JOIN
语法。您的问题是一个范围问题,很容易解决

这样做时,您会注意到
p3
似乎缺少
id
post\u id
上的连接条件。这是您想要的查询结构:

SELECT p1.ID, p1.post_title, p1.post_excerpt, p2.meta_value, p1.guid, p4.guid
FROM wp_posts p1 JOIN
     wp_postmeta p2
     ON p1.ID = p2.post_id AND
        p2.meta_key = '_price' AND
        p1.post_type = 'product' AND
        p1.post_status = 'publish' JOIN
     wp_posts p3
     ON p3.? = p2.? AND  -- What join condition do you intend here?
        p3.meta_key = '_thumbnail_id' JOIN
     wp_postmeta p4
     ON p4.ID = p2.post_id AND
        p4.post_type = 'attachment';
切勿在
FROM
子句中使用逗号。始终使用显式
JOIN
语法。您的问题是一个范围问题,很容易解决

这样做时,您会注意到
p3
似乎缺少
id
post\u id
上的连接条件。这是您想要的查询结构:

SELECT p1.ID, p1.post_title, p1.post_excerpt, p2.meta_value, p1.guid, p4.guid
FROM wp_posts p1 JOIN
     wp_postmeta p2
     ON p1.ID = p2.post_id AND
        p2.meta_key = '_price' AND
        p1.post_type = 'product' AND
        p1.post_status = 'publish' JOIN
     wp_posts p3
     ON p3.? = p2.? AND  -- What join condition do you intend here?
        p3.meta_key = '_thumbnail_id' JOIN
     wp_postmeta p4
     ON p4.ID = p2.post_id AND
        p4.post_type = 'attachment';
#1054-on子句中的未知列“p1.ID”

根据上的文档:

SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
联接的优先级高于逗号运算符(,),因此联接 表达式t1,t2连接t3被解释为(t1,(t2连接t3)),而不是 ((t1,t2)连接t3)。这会影响使用ON子句的语句 因为该子句只能引用 连接,则优先级会影响对这些操作数的解释 是的

示例

SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
联接优先于逗号运算符,因此 ON条款为t2和t3。因为t1.i1不是其中的一列 在操作数中,结果是“on”中的未知列“t1.i1” 子句的错误

因此,相应地更改join子句并构建sql语句

#1054-on子句中的未知列“p1.ID”

根据上的文档:

SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
联接的优先级高于逗号运算符(,),因此联接 表达式t1,t2连接t3被解释为(t1,(t2连接t3)),而不是 ((t1,t2)连接t3)。这会影响使用ON子句的语句 因为该子句只能引用 连接,则优先级会影响对这些操作数的解释 是的

示例

SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
联接优先于逗号运算符,因此 ON条款为t2和t3。因为t1.i1不是其中的一列 在操作数中,结果是“on”中的未知列“t1.i1” 子句的错误


因此,相应地更改join子句并构建sql语句。

我添加了查询(还添加了缺少的条件)。“字段列表”中的未知列“p4.guid”@fahauddin…我仍然收到错误信息。这表明
wp\u postemta
没有名为
guid
的列。也许您打算
p3
。我添加了您的查询(还添加了缺少的条件)。“字段列表”中的未知列“p4.guid”@fahauddin…我仍然收到错误信息。这表明
wp\u postemta
没有名为
guid
的列。也许您想要
p3
。显式
JOIN
链在逗号分隔的联接之前进行计算。在显式
JOIN
链中,只能引用已指定的表的列。显式
JOIN
链在逗号分隔的联接之前求值。在显式的
JOIN
链中,只能引用已经指定的表的列。