2012-10-15 70 views
2

我試圖放置一個EAV表,我無法讓它工作。 我得到的結果,但我無法得到它排序。排序EAV數據庫

這是我的查詢:

SELECT 
    formFields.uid, 
    formFields.formId, 
    formFields.postId, 
    formFields.name, 
    formFields.value 
FROM formFields 
INNER JOIN formFields aux 
    ON (aux.name = "date") 
WHERE 
    formFields.formId = "1789" 
    AND formFields.deleted = 0 
    AND formFields.hidden = 0 
ORDER BY aux.value DESC 

這是表:

uid formId postId name value 
1 1789 1 title example title #1 
2 1789 1 date 1341091600 
3 1789 2 title example title #2 
4 1789 2 date 1341092300 
5 1789 3 title example title #3 
6 1789 3 date 1341081200 

這是我需要的結果:

uid formId postId name value 
3 1789 2 title example title #2 
4 1789 2 date 1341092300 
1 1789 1 title example title #1 
2 1789 1 date 1341091600 
5 1789 3 title example title #3 
6 1789 3 date 1341081200 

結果是由值排序在名稱欄中有日期
(值僅爲示例)

編輯:這裏是一個sqlfiddle:http://sqlfiddle.com/#!2/0d3c32/2

回答

1

如果你想ORDER BYdate值,那麼你可以使用這樣的事情:

SELECT 
    formFields.uid, 
    formFields.formId, 
    formFields.postId, 
    formFields.name, 
    formFields.value 
    FROM formFields 
INNER JOIN formFields aux 
    ON (aux.name = "date") 
WHERE formFields.formId = "1789" 
    AND formFields.deleted = 0 
    AND formFields.hidden = 0 
ORDER BY case when formFields.name = 'date' then 0 else 1 end 

參見SQL Fiddle with Demo

+0

無法使用此表中保存的帖子仍以相同的順序打印。這是沒有排序的原始查詢的樣子。這工作:http://sqlfiddle.com/#!2/f4b70/2 – Patrik

+0

必須有另一個錯誤,因爲它不應該返回超過12行 – Patrik

+0

@Patrik我開始與你原來的小提琴發佈在另一個回答。它有超過12行。讓我檢查一下訂單 – Taryn

0
SELECT  formFields.uid,  
     formFields.formId,  
     formFields.postId, 
     formFields.name, 
    formFields.value 
FROM formFields tx_gcgluteusfeed_formFields 
INNER JOIN formFields b 
     ON formFields.postId = b.postId 
INNER JOIN formFields c 
     ON (c.name = "date") 
WHERE ormFields.formId = "1789" 
     AND formFields.deleted = 0 
     AND formFields.hidden = 0 
ORDER BY 1 DESC 
如果你想

順序由第一列

+0

它沒有似乎工作。這可能是查詢的其餘部分是錯誤的。我製作了一個sqlfiddle:http://sqlfiddle.com/#!2/0d3c32/2 – Patrik