2011-08-23 17 views
0

我正在根據過濾系統一次性提取最終將從5個表中獲取的信息。現在我有三個不同的數據庫在運行,它看起來很棒。我的問題是我有一些領域,我只想顯示不同的信息和其他我想顯示所有。爲了更好地解釋我將舉出我的例子。5表 - >顯示某些不同的行

我選擇代碼:

SELECT w.event, 
     w.city, 
     w.DATE, 
     a.TIME, 
     w.tmc, 
     a.weather, 
     a.surface_temperature, 
     p.top, 
     p.LEFT 
FROM weather w 
     LEFT OUTER JOIN application a 
     ON a.DATE = w.DATE 
      AND a.tmc = w.tmc 
     LEFT OUTER JOIN pinlocations p 
     ON w.city = p.cityname 
WHERE w.DATE = '" & datepicker_value.Text & "' 
     AND w.TIME LIKE '" & eventTime.SelectedItem.Value & "' 

我有一個地圖,我把針上基於p.top和p.left的。當我點擊這個時,我想顯示城市名稱,tmc,然後在所有其他基於過濾搜索的信息下。在上面的例子中,它在引腳上創建引腳,爲每個字段創建一個新引腳,我希望它不同。

我知道獨特的命令存在,只是不知道如何在這種情況下使用它。

謝謝!

+0

感謝您使它看起來更漂亮:) – Dom

+0

問題是您的結果可能已經不同了,所以添加關鍵字將無濟於事。這實際上聽起來更像是一個應用程序層問題 - 每次你創建一個新的引腳時,首先檢查一下是否存在一個相同的位置,並在必要時進行更新。 –

+0

首先,您在您的SQL查詢中使用串聯(* [EXTREMELY DANGEROUS])(http://www.google.com/#sclient=psy&hl=zh-CN&source=hp&q=sql+string+concatenation+injection&aq=f&aqi= &aql =&oq =&pbx = 1&bav = on.2,or.r_gc.r_pw。&fp = 4e0d51cc84241161&biw = 1680&bih = 883)* and * [EXTREMELY BAD PRACTICE](http://www.google.com/#hl=zh-CN&sa= X&ei = 09tTrrXxBoaDtgf_npnmBQ&ved = 0CBUQvwUoAQ&q = sql + string + concatenation + bad + practice&spell = 1&bav = on.2,or.r_gc.r_pw。&fp = 4e0d51cc84241161&biw = 1680&bih = 883)*由於[SQL注入攻擊] .wikipedia.org /維基/ SQL_injection)。我建議你使用參數! –

回答

1

使用一個group by修飾符,您想要不同的值。
然後使用group_concat作爲您希望在逗號分隔列表中列出的值。

SELECT group_concat(w.event) as events, 
     group_concat(w.city) as cities, 
     group_concat(w.`DATE`) as dates, 
     group_concat(a.`TIME`) as times, 
     group_concat(w.tmc) as tmcs, 
     group_concat(a.weather) as weathers, 
     group_concat(a.surface_temperature) as temperatures, 
     p.top, 
     p.LEFT 
FROM weather w 
     LEFT OUTER JOIN application a 
     ON a.DATE = w.DATE 
      AND a.tmc = w.tmc 
     LEFT OUTER JOIN pinlocations p 
     ON w.city = p.cityname 
WHERE w.DATE = '" & datepicker_value.Text & "' 
     AND w.TIME LIKE '" & eventTime.SelectedItem.Value & "' 
GROUP BY p.top, p.left 

如果左頂部座標永遠只能鏈接到一個城市(如你所期望),沒有必要把它放在一個group_concat語句中。 MySQL也不要求*將它放在group by子句中。

參見:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

*),你可以強制MySQL確實因規則執行嚴格的組,但默認情況下是關閉的。

這裏不能使用distinct,因爲distinct是一個全或全無的事情,它運行在所有選定值的集體中,而不僅僅是一個字段。

+0

如何使用此方法調用信息?我的方法是: <%#Container.DataItem(「tmc」)%> 不再有效 – Dom

+0

您可以使用'explode'從php中的逗號分隔列表中提取項目,您使用的是BTW? – Johan

+0

沒關係我想通了。非常感謝!我正在使用vb,因爲這個項目需要工作。而我現在需要從組名中拉出不是原始字段名稱(杜)! – Dom