透視功能我需要實現在一個MySQL表的搜索。它將數據存儲在不同的行中,所以我使用MySQL中的pivot功能來獲取數據。
當我只需要搜索一個值時(表格結構如下),它運行良好。搜索與MySQL中
| id | lead_id | form_id | field_number | value |
===================================================
| 1 | 12 | 12 | 2.3 | John |
| 2 | 12 | 12 | 4.3 | Dublin |
| 3 | 13 | 12 | 2.3 | Sam |
| 4 | 13 | 12 | 4.3 | Cork |
| 5 | 16 | 14 | 5 | 897894 |
| 16 | 16 | 16 | 7 | test |
| 17 | 12 | 12 | 4.4 | Ireland |
| 18 | 12 | 12 | 7 | 8899899 |
| 19 | 13 | 12 | 4.4 | USA |
| 20 | 13 | 12 | 7 | 0909902 |
--------------------------------------------------
我用來搜索的初始查詢如下。當我需要僅通過'名稱'搜索時,它運行良好。
SELECT lead_id,
MAX(IF(ROUND(`field_number` , 1) = '2.3', value, 0)) AS "Name",
MAX(IF(ROUND(`field_number` , 1) = '4.3', value, 0)) AS "City",
MAX(IF(ROUND(`field_number` , 1) = '4.4', value, 0)) AS "State",
MAX(IF(ROUND(`field_number` , 1) = '7', value, 0)) AS "SSnumber"
FROM details
WHERE lead_id IN
(
SELECT DISTINCT lead_id
FROM details
WHERE
(round(`field_number`,1) = '2.3' AND `value` LIKE '%s%')
AND form_id = 12
)
GROUP BY `lead_id`
現在我需要實現一個過濾器,按城市,州和pincode進行搜索。
所以我需要對此查詢進行更改,但我沒有得到它正常工作。
我需要添加一個AND條件的搜索按城市,州和pincode過濾,像這樣的東西。
SELECT lead_id,
MAX(IF(ROUND(`field_number` , 1) = '2.3', value, 0)) AS "Name",
MAX(IF(ROUND(`field_number` , 1) = '4.3', value, 0)) AS "City",
MAX(IF(ROUND(`field_number` , 1) = '4.4', value, 0)) AS "State",
MAX(IF(ROUND(`field_number` , 1) = '7', value, 0)) AS "SSnumber"
FROM details
WHERE lead_id IN
(
SELECT DISTINCT lead_id
FROM details
WHERE
(
(round(`field_number`,1) = '2.3' AND `value` LIKE '%s%') AND
(round(`field_number`,1) = '4.3' AND `value` LIKE '%d%') AND
(round(`field_number`,1) = '4.4' AND `value` LIKE '%r%') AND
)
AND form_id = 12
)
GROUP BY `lead_id`
這不適用於存儲在不同行中的數據。你可以給我一個建議我分類的方法。
這個查詢一定要慢得要命。 – Johan 2011-06-09 08:36:02