Нужна помощь в создании тега span для каждого элемента group_concat ().mySql, VB.Net - PullRequest
0 голосов
/ 29 августа 2011

В настоящее время у меня есть оператор выбора sql, который на данный момент выбирает несколько вещей из 3 разных таблиц, вот этот код:

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>

С благодарностью!

1 Ответ

0 голосов
/ 29 августа 2011

Это то, что вы хотите?

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

...