2011-07-14 198 views
1

我有以下MySQL查詢,它使我得到meta_key等於_cnote_module_numberpost_id等於$mod_idMySQL從查詢中獲得查詢

但是現在我如何添加到該查詢後,我得到的post_id = '$mod_id'看結果,並找到meta_value(這是一個數字),比看回meta_key等於_cnote_module_number並獲得meta_value多數民衆贊成大於第一個結果是meta_value

$query = ("SELECT * FROM postmeta WHERE meta_key = '_cnote_module_number' AND post_id = '$mod_id'"); 

編輯

我有2代表第一是postmeta,用..

------------------------------------- 
post_id | meta_key | meta_value 
------------------------------------- 
    10 | jason |  1 
    49 | cnote |  3 
    56 | cnote |  2 
    97 | cnote |  7 

二是usermeta與..

----------- 
    mod_id 
----------- 
    10  
    49  
    67 

我要確保postmeta.meta_key = 'cnote'usermeta.mod_id等於postmeta.post_id。比任何一個ID相當於我想要得到的postmeta.meta_value和比找到第一個數字大於該值。

在這個例子中我想的結果是從postmeta

+0

啊:「第一個數字大於這個數值」對於你的問題是一件很重要的事情。我會更新我的答案。 –

回答

1

第4行你可以JOIN給予它的兩個不同名稱的表本身。例如,以下將返回所有 meta_values其中B表的meta_value比A表的meta_value了較大:

SELECT B.meta_value 
FROM postmeta A 
JOIN postmeta B 
ON ( B.meta_value > A.meta_value 
    AND A.meta_key = B.meta_key) 
WHERE A.meta_key = 'cnote' 
AND A.post_id = '$mod_id' 

但是對於您的具體問題,我們希望未來 meta_value。這更容易;因爲你只想要返回一行,你可以從上面走meta_values的MIN:

SELECT MIN(B.meta_value) 
FROM postmeta A 
JOIN postmeta B 
ON ( B.meta_value > A.meta_value 
    AND A.meta_key = B.meta_key) 
WHERE A.meta_key = 'cnote' 
AND A.post_id = '$mod_id' 

如果你想獲得一個返回所有對meta_values的查詢,其中A.meta_value立即B的前面.meta_value,我們也可以這樣做;讓我知道。

+0

好的,我更新了問題。它有點令人困惑,但我希望我的例子有所幫助! – cnotethegr8

+0

好吧,我更新了答案,但留在了大部分原始查詢中。讓我知道如果它不起作用,你不能使它工作;我沒有花費足夠的時間查看你的餐桌結構,以便更好地理解它。 –