2014-04-07 27 views
0

我有一個ID列表爲(1,2,3 ...)選擇對照表中的每個字段的ID

我稱它爲$ category_ids。現在在同一個表中有一個super_parent_category字段,這意味着列表中該類別的最高標籤。

現在我想檢索每個類別標識的超級父標識。

SELECT es_super_parent,es_id 
     FROM ephpb2b_categories 
     WHERE es_id IN ({$category_ids})"); 

上面的查詢將返回我的只有4條記錄所有在$ category_ids的ID屬於這4個類別。

但我想得到$ category_ids中所有50條記錄的結果。

所以,如果我提供1,2,4,5,6,6,76, 我應該返回1,3,4,5,6,66,2,

感謝

+1

什麼問題呢? – KiKMak

+0

問題是,它只是一次返​​回每個父類別..所以如果在(3,4,5)中有ids並且它們屬於一個parent_category即7。所以它僅返回7個1次 –

+0

我不'完全理解你的意思。 $ category_ids是來自(子)查詢嗎?如果是這樣,你可以發佈它嗎?這兩個表的模式。 – citizen404

回答

1

這個對我有用。用var_dump()仔細檢查你的PHP變量$category_ids,即

我用你提供的樣本數據進行測試。

SELECT es_super_parent, es_id 
    FROM ephpb2b_categories 
    WHERE es_id IN (1, 2, 4, 5, 6, 6, 76); 

和下表所示的模式:

CREATE TABLE ephpb2b_categories (
    es_id INT PRIMARY KEY, 
    es_super_parent INT NOT NULL, 
    FOREIGN KEY (es_super_parent) REFERENCES ephpb2b_categories (es_id) 
) ENGINE=InnoDB; 

,並插入一些數據:

INSERT INTO ephpb2b_categories (es_id, es_super_parent) VALUES 
    (0, 0), 
    (1, 1), 
    (76, 76), 
    (2, 76), 
    (3, 2), 
    (4, 4), 
    (5, 5), 
    (6, 6), 
    (66, 6); 

這裏的工作SQL Fiddle

+0

感謝它的工作:) –

+0

@ user3445065 - 不客氣。另外,如果你喜歡,可以upvote。謝謝! – citizen404

+1

他沒有足夠的聲望來這樣做:) – fancyPants

相關問題