簡體   English   中英

使用多個聯接的未知列

[英]Unknown column using multiple joins

我試圖兩次加入兩個表。 一個有不同的行,另一個時間有不同的行,但是我收到以下錯誤,

#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似乎缺少idpost_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'

根據關於JOIN語法的文檔

JOIN的優先級高於逗號運算符(,),因此聯接表達式t1,t2 JOIN t3被解釋為(t1,(t2 JOIN t3)),而不是((t1,t2)JOIN t3)。 這會影響使用ON子句的語句,因為該子句只能引用聯接操作數中的列,並且優先級會影響對這些操作數的解釋。

范例

 SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3); 

JOIN優先於逗號運算符,因此ON子句的操作數為t2和t3。 由於t1.i1不是兩個操作數中的任何列,因此結果是“ on子句”錯誤中的未知列“ t1.i1”。

因此,相應地更改您的join子句並構架sql語句。

暫無
暫無

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

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