2011-08-29 23 views
0

我現在有,在目前由3個不同的表中選擇幾件事情SQL SELECT語句,這裏是代碼:需要幫助爲每個group_concat()項目生成span標籤。 MYSQL,VB.Net

SELECT 
group_concat(w.event) as events, group_concat(w.date) as dates, 
group_concat(a.time) as times, group_concat(DISTINCT w.tmc) as tmcs, 
group_concat(a.weather) as weathers, group_concat(a.surface_temperature) as temperatures, p.top, p.LEFT, w.City 
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.event= '" & weatherType.SelectedItem.Value & "' GROUP BY p.top, p.left 

我用下面的中繼器來顯示它在地圖:

<asp:Repeater id="weatherFeed" Runat="server"><ItemTemplate> 
    <a href="index.htm" onClick="return hs.htmlExpand(this)"> 
    <img src="images/mapPin.png" title="<%#Container.DataItem("city")%>" 
     style="position:absolute; left:<%#Container.DataItem("left")%>px; 
     top:<%#Container.DataItem("top")%>px;" /></a> 

     <div class="highslide-maincontent"> 
    Title: <%#Container.DataItem("City")%><br /> 
     TMC: <%#Container.DataItem("tmcs")%><br /> 
     Location on the map: <%#Container.DataItem("left")%>, <%#Container.DataItem("top")%><br /> 
     <div class="span-1">Time</div><div class="span-1">Surface Temperatures</div> 
     <div class="span-1"><%#Container.DataItem("temperatures")%>&deg;</div><div 
     class="span-1"><%#Container.DataItem("times")%></div> 
     </div> 
</ItemTemplate></asp:Repeater> 

我遇到的問題是這個,我想爲每個溫度和每一次生產。目前它把所有的溫度都放在1格中,並且一直放在1格中,這是因爲我使用了group_concat()。如果我從時間/表面溫度中刪除group_concat(),那麼我只能得到包含基於select語句的數據的第一行。我怎樣才能調整我的SQL語句,所以我可以產生以下結果:

Title: Indianapolis 
TMC: 107+4652 
Location on the Map: 250, 347 
<div class="span-1">Time:</div> <div class="span-1">Surface Temp:</div> 
<div class="span-1">1:00  <div class="span-1">31deg</div> 
<div class="span-1">2:00  <div class="span-1">36deg</div> 
<div class="span-1">3:00  <div class="span-1">42deg</div> 

非常感謝!

+0

這代碼將容易受到sql注入 –

回答

0

這是你想要的嗎?

SELECT 
    p.top, p.LEFT, w.City 
    , w.tmc 
    , group_concat(w.event) as events 
    , group_concat(w.date) as dates 
    , group_concat(CONCAT('<div class="span-1">',a.time 
         ,<div class="span-1">, A.surface_temperature) 
       , SEPARATOR '</div>') as divspan 
    , group_concat(a.weather) as weathers 

FROM weather w 
LEFT JOIN application a ON (a.DATE = w.DATE AND a.tmc = w.tmc) 
LEFT JOIN pinlocations p ON (w.city = p.cityname) 
WHERE w.DATE = '" & datepicker_value.Text & "' 
     AND w.event= '" & weatherType.SelectedItem.Value & "' 
GROUP BY p.top, p.left, w.tmc 

所有你想分開的區域放在group by部分。
鋁不是唯一由group by定義的值進入一個group_concat

您將需要編輯這一行:

, group_concat(CONCAT(... 

有點把事情做好,請參閱:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

+0

我不這麼認爲。我的問題是我想讓它如此每個surface_temperature和每次都被放入他們自己的div標籤。我的方法和你的方法都把1個div標籤的所有表面溫度和1個div標籤的所有時間。 我得到這個:

1:00,2:00,3:00
31deg,36deg,42deg
Dom