2016-04-26 51 views
0

比较从SQL(LONGTEXT)日期在项目中,我从MySQL WordPress的自定义字段数据:一个整数从PHP

--------------------------------------------------- 
id | post_id | meta_key | meta_value 
--------------------------------------------------- 
1  | 200  | age_min | 5  
2  | 200  | age_max | 8 
3  | 399  | ...  | ... 

我的表结构

id => aut_increment 
meta_key => varchar(255) 
meta_value => longtext 

从我的sql脚本我有以“age_min和age_max”和孩子的数量之间找到孩子的:

SELECT DISTINCT p.ID 
     , a.meta_value as nbrmin, b.meta_value as nbr_enfants_min , c.meta_value as age_min, d.meta_value as age_max 

     FROM `6288gjvs_posts` as p 
     LEFT JOIN 6288gjvs_postmeta as a ON a.post_id = p.ID 
     LEFT JOIN 6288gjvs_postmeta as b ON b.post_id = p.ID 
     LEFT JOIN 6288gjvs_postmeta as c ON c.post_id = p.ID 
     LEFT JOIN 6288gjvs_postmeta as d ON d.post_id = p.ID 
     WHERE p.post_type = 'product' AND post_status = 'publish' 

     AND a.meta_key = 'childs_min_number' 
     AND a.meta_value <= 2 

     AND b.meta_key = 'childs_max_number' 
     AND b.meta_value >= 2 

     AND c.meta_key = 'age_min' 
     AND c.meta_value = 1 

     AND d.meta_key = 'age_max' 
     AND d.meta_value >= 10 

当我启动该查询,这不工作的亲perly,因为meta_value类型是一个longtext,我的php变量($ this-> age_min,$ this-> age_max)是整数,所以我无法比较这两种不同的类型?

我试图这样转换,没有运气:Mysql conversion functions

任何人都可以帮我请:

... CONVERT(a.meta_value, DECIMAL) ... 
从这个网站提到

谢谢。

回答

1

原谅我,如果我错了,但它不应该是AND b.meta_value >= {$this->age_max}

+0

该死,17秒LATE – 2016-04-26 13:10:24

+0

找你的吧,我对我的问题所作的编辑,我有在儿童年龄和数字之间进行搜索。 – user44321

+0

你能标记我们的答案是正确的吗? :d – 2016-04-26 13:33:24

1

你不需要进行类型转换 我认为错误是本着 AND a.meta_value <= {$this->age_min}

它不应该是AND a.meta_value >= {$this->age_min}

+0

谢谢大家,你是在我改变了a.meta_value,但仍然无法正常工作,我编辑了我的真正的SQL查询问题(不工作:p) – user44321

+0

我没有看到任何错误在SQL查询,可以你运行在MySQL服务器,而不是从PHP? –

+0

嘿, 我是一个糟糕的测试人员,错误'a.meta_value> = {$ this-> age_min}'是这个罪行的责任人。 谢谢你帮助球员。 我只想要你的确认:我不应该把长文转换成小数?真的吗? – user44321