所有
通过大量研究,我设法让以下查询起作用,但是我并不完全理解它在做什么。我现在需要稍微调整一下,因此需要更彻底地理解它。
查询在几个表中查找以提供结果列表,每组结果一行,而不是每个结果有一行(这将有太多重复的信息)
查询是: -
SELECT od_date, tbl_order.od_id, tbl_order_item.od_item_id, pd_code, item_code, pd_name, >cust, pd_type, tbl_order_item.od_item_id, tbl_order_item.test_suite_name,
MAX( IF( tbl_lab_item.test_name = 'Test 1', tbl_lab_item.test_result, NULL ) ) AS TEST1,
MAX( IF( tbl_lab_item.test_name = 'Test 2', tbl_lab_item.test_result, NULL ) ) AS TEST2,
MAX( IF( tbl_lab_item.test_name = 'Test 3', tbl_lab_item.test_result, NULL ) ) AS TEST3,
MAX( IF( tbl_lab_item.test_name = 'Test 4', tbl_lab_item.test_result, NULL ) ) AS TEST4,
MAX( IF( tbl_lab_item.test_name = 'Test 5', tbl_lab_item.test_result, NULL ) ) AS TEST5,
MAX( IF( tbl_lab_item.test_name = 'Test 6', tbl_lab_item.test_result, NULL ) ) AS TEST6
FROM tbl_item
INNER JOIN tbl_item ON tbl_lab_item.od_item_id = tbl_item.od_item_id
INNER JOIN tbl_order ON tbl_order.od_id = tbl_item.od_id
WHERE tbl_order.od_date LIKE '%$orderDate%'
AND customer_id = '%custID%'
GROUP BY tbl_lab_item.od_item_id
这给我以下输出: -
Order Date | Order ID | Item Id | <snip - other columns> | TEST1 | TEST2 | TEST 3 ...etc
09/09/2013 | 2 | 1 | | 10 | 20 | 30 ...etc
我现在要做的是显示任何小于50的结果为'&lt; 50'而不是显示实际数字。同上'&gt; 100'。
我不确定如何将此逻辑添加到上述查询中,或者甚至是否可能。
非常感谢您提供的任何帮助。
非常感谢, 杰森
答案 0 :(得分:0)
尝试使用您需要检查的每个列的大小写 像
这样的东西case
when result <50 then '<50'
when result > 100 then '..'
end
答案 1 :(得分:0)
看起来您希望将现有查询包装到另一个查询中,例如......
select
PQ.*,
case when PQ.Test1 IS NULL then ' '
when PQ.Test1 < 50 then '< 50'
when PQ.Test1 > 100 then '> 100'
else PQ.Test1 end as FinalTest1,
case when PQ.Test2 IS NULL then ' '
when PQ.Test2 < 50 then '< 50'
when PQ.Test2 > 100 then '> 100'
else PQ.Test2 end as FinalTest2,
case when PQ.Test3 IS NULL then ' '
when PQ.Test3 < 50 then '< 50'
when PQ.Test3 > 100 then '> 100'
else PQ.Test3 end as FinalTest3,
case when PQ.Test4 IS NULL then ' '
when PQ.Test4 < 50 then '< 50'
when PQ.Test4 > 100 then '> 100'
else PQ.Test4 end as FinalTest4,
case when PQ.Test5 IS NULL then ' '
when PQ.Test5 < 50 then '< 50'
when PQ.Test5 > 100 then '> 100'
else PQ.Test5 end as FinalTest5,
case when PQ.Test6 IS NULL then ' '
when PQ.Test6 < 50 then '< 50'
when PQ.Test6 > 100 then '> 100'
else PQ.Test6 end as FinalTest6
from
( Your Full Query ) as PQ
每条评论的后续行动
如果您的查询获得任何记录,那么我的版本也应该如此。从您的原始查询处理列重命名,我会调整
这
MAX( blah blah ) AS TEST1,
要
MAX( blah blah ) AS preTEST1,
列Test2-6相同
然后,从
更改我的上述查询 case when PQ.preTest1 IS NULL then ' '
when PQ.preTest1 < 50 then '< 50'
when PQ.preTest1 > 100 then '> 100'
else PQ.preTest1 end as Test1,
等等2-6。原始查询的其余部分保持不变,否则......仍然依赖于查询的结果。您还可以编辑现有帖子并将修改后的查询放在那里供我查看。如果内部部分查询没有返回任何内容,那么我的外部查询也不会。