2012-07-24 31 views
0
SELECT * 
        FROM products2tecspecs as p2t, products_tecspecs as pt 
        WHERE p2t.fk_product_id = '%s' AND pt.pts_id = fk_tecspec_id AND pt.pts_id 
        IN (5275, 21, 5276, 5277, 5278, 49, 5279) 
        ORDER BY FIELD(pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279) 

我有這個選擇,在那裏我找到de特定的ID,並把它按我想要的順序。 但我有這個關係的問題。我在一個foreach函數中使用它,我需要7個循環。問題不是零,問題是它只帶來了關聯的產品。當然,這不是一個問題,感謝上帝,它發生了,但在我的情況下,它會破壞佈局,如果它只有2,例如。按字段選擇訂單即使它不存在

有沒有一種方法可以讓我做這樣的事情:如果找不到字段,請將其放置到位?

如果我創建的關係,它的工作原理,但我需要用700級的產品做...

我發現this,但它並不似乎是一個NULL問題...

我也試圖與LEFT JOIN但正如我所說,如果關係亙古不存在,不能讓空...

我矇蔽


我發現這個SELECT pts_name FROM ( SELECT pts_name, CASE pts_id WHEN 5275 THEN 1 WHEN 21 THEN 2 WHEN 5276 THEN 3 WHEN 5277 THEN 4 WHEN 5278 THEN 5 WHEN 49 THEN 6 WHEN 5279 THEN 7 END AS sort_order FROM products_tecspecs WHERE pts_id IN (5275, 21, 5276, 5277, 5278, 49, 5279) )a ORDER BY a.sort_order ASC。它把選擇我要,但還是沒能找到一種方法,做我的目標......


與加盟
SELECT * FROM products2tecspecs AS p2t LEFT JOIN products_tecspecs AS pt ON (p2t.fk_tecspec_id = pt.pts_id) WHERE p2t.fk_product_id =34 AND pt.pts_id IN (5275, 21, 5276, 5277, 5278, 49, 5279) OR p2t.p2t_value IS NULL ORDER BY FIELD(pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279) LIMIT 40


,但沒有奏效。它帶來的結果超出了所選的IN字段。

回答

0

你能簡單地添加這些選項之一的WHERE子句中(與LEFT JOIN溶液):

OR pt.pts_id IS NULL 
    OR fk_tecspec_id IS NULL 

+0

正如我張貼,它沒有工作。也許與案例,或一些IF,但無法找到如何...... – JGSilva 2012-07-24 17:55:32

+0

事實上,是'p2t.p2t_value'應該是空的,但沒有奏效。嘗試過'p2t.p2t_value =「」';沒有工作。 – JGSilva 2012-07-24 18:00:26

相關問題