2012-12-05 30 views
0
的导出字段列名

我们仍然可以通过使用派生列简化这个查询是另一个程序的输入简化查询字符串通过重新使用MYSQL

$query = "SELECT table1.id, 
     COUNT(DISTINCT arr1.element) AS Arr1, 
     COUNT(DISTINCT arr2.element) AS Arr2, 
     COUNT(DISTINCT arr1.element) + 
     COUNT(DISTINCT arr2.element) AS tot, 
(COUNT(DISTINCT arr1.element)/(COUNT(DISTINCT arr1.element)+COUNT(DISTINCT arr2.element)))*col3 AS c31, 
(COUNT(DISTINCT arr2.element)/(COUNT(DISTINCT arr1.element)+COUNT(DISTINCT arr2.element)))*col3 AS c32 
FROM table1 
WHERE col2 = 'x'" 

像这样

$query = "SELECT table1.id, 
     COUNT(DISTINCT arr1.element) AS Arr1, 
     COUNT(DISTINCT arr2.element) AS Arr2, 
     COUNT(DISTINCT arr1.element) + 
     COUNT(DISTINCT arr2.element) AS tot, 
     (Arr1/tot)*col3 AS c31, 
     (Arr2/tot)*col3 AS c32 
FROM table1 
WHERE col2 = 'x'" 

感谢

回答

1

您可以试试这个:

$query = " 
SELECT tab.id, tab.Arr1, tab.Arr2, tab.tot, (tab.Arr1/tab.tot) as c31, (tab.Arr2/tab.tot) as c32 
from (
SELECT table1.id, 
     COUNT(DISTINCT arr1.element) AS Arr1, 
     COUNT(DISTINCT arr2.element) AS Arr2, 
     COUNT(DISTINCT arr1.element) + 
     COUNT(DISTINCT arr2.element) AS tot 
FROM table1 
WHERE col2 = 'x' 
) as 'tab' " 
0

试试这个:

SELECT id, Arr1, Arr2, (Arr1 + Arr2) tot, ((Arr1/(Arr1 + Arr2)) * col3) c31, ((Arr2/(Arr1 + Arr2)) * col3) c32 
FROM (SELECT table1.id, COUNT(DISTINCT arr1.element) AS Arr1, COUNT(DISTINCT arr2.element) AS Arr2, col3 
FROM table1 WHERE col2 = 'x') AS A