2011-12-29 64 views
3

我想提取存儲在我的表的同一列中的兩種類型的數據,並將其顯示在兩列中。我做了很多搜索並做了很多測試,但沒有任何工作。 這可能是很容易做到......Mysql選擇並顯示兩列

這是我的表:

| id | field_id | user_id | value   | 
| 175 |  65 |  3 | 48.8984188201264 | 
| 173 |  65 |  2 | 37.9841493  | 
| 177 |  65 |  4 | 48.8440603  | 
| 179 |  65 |  5 | 48.8407529  | 
| 174 |  66 |  2 | 23.7279843  | 
| 176 |  66 |  3 | 2.25568230749569 | 
| 178 |  66 |  4 | 2.3730525  | 
| 180 |  66 |  5 | 2.3213214  | 

我想在一個又一個通過顯示在一個字段和經度(FIELD_ID = 66),緯度(FIELD_ID = 65)加入user_id。

兩個選擇:

select value as longitude 
from wp_bp_xprofile_data 
where field_id=66; 

select value as latitude 
from wp_bp_xprofile_data 
where field_id=65; 

| longitude  | 
| 23.7279843  | 
| 2.25568230749569 | 
| 2.3730525  | 
| 2.3213214  | 

| latitude   | 
| 48.8984188201264 | 
| 37.9841493  | 
| 48.8440603  | 
| 48.8407529  | 

我怎麼能在一個表中有兩個欄顯示這個數據?

感謝

+0

緯度相關的id是經度+ 1的ID? – 2011-12-29 17:45:19

回答

2

巴薩姆的答案是一切都很好,但它不完全是世界上最有效的事情。您可以簡化您的查詢,像這樣:

select 
    t1.user_id, 
    t1.value as latitude, 
    t2.value as longitude 
from 
    wp_bp_xprofile_data t1 
    inner join wp_bp_xprofile_data t2 on 
     t1.user_id = t2.user_id 
where 
    t1.field_id = 65 
    and t2.field_id = 66 

這樣,你不拉子查詢和您的查詢是更清晰一點,至少對我來說。

+0

事實上,這很容易理解。也謝謝你。 – Arystark 2011-12-30 15:33:34

2
SELECT t1.user_id, latitude, longitude 
FROM 
(SELECT user_id, value as latitude 
FROM wp_bp_xprofile_data 
WHERE field_id = 65) t1 
INNER JOIN 
(SELECT user_id, value as longitude 
FROM wp_bp_xprofile_data 
WHERE field_id = 66) t2 ON t1.user_id = t2.user_id 
+0

非常感謝!這正是我想要的結果。 – Arystark 2011-12-30 12:06:33

+0

很高興提供幫助,你可能應該編輯你的問題,說你加入了user_id,因爲我不得不猜測 – 2011-12-30 13:28:23

+0

完成!再次感謝。 – Arystark 2011-12-30 15:24:03