2012-10-15 36 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