Hallöle,
ich habe eine Seite gebaut, die Events ähnlich einer Abflugtafel auf Flughäfen anzeigt. Sie wird alle 60 sec aktualisiert. Mehrere gleichartige Events an einem Tag sollen aber nur eine Position beanspruchen. Ob das wohl mit einer geschickten SQL- Abfrage geht?
Was gemeint ist, seht ihr in Heidelberg am 13.06.2010. Das Solarboot fährt 6 mal am Tag und verdrängt dadurch andere Events von der Anzeige.
Ich möchte die Solarboot- Anzeige so:
10:00 Solarboot
auch um 11:30, 13:00, 15:00, 16:30, 18:00
Allerdings stehen die gleichartigen Events nicht uhrzeitmäßig hintereinander, es können andere Events dazwischenkommen. Im Moment habe ich keine Idee, wie ich die Events zusammenfassen kann.
Das jetzige SQL- Kommando:
$q = "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# UMKREIS-ORTE MIT OEFFTL. VERANSTALTUNGEN LESEN
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT
SQL_CALC_FOUND_ROWS
ter1.*
,ter1.id TID
,DATE_FORMAT(ter1.tag,'%w') wotag
,ter1.geo_breite ter_lat
,ter1.geo_laenge ter_lon
,ort1.*
,ort1.id ORT
,ort1.plz ort_plz
,ort1.name ort_name
,vtr1.id VIP
,vtr1.firma1 vtr_firma1
,typ1.id TYP
,typ1.gruppe typ_gruppe
,typ1.name typ_name
-- dist = 6378.388 * acos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))
-- 62831.853
-- 6366.19773095
,ROUND( 6366.19773095 * ACOS( SIN(".$rad_lat1.") *SIN(RADIANS(IF(ter1.geo_breite IS NULL,ort1.geo_breite,ter1.geo_breite))) +COS(".$rad_lat1.") *COS(RADIANS(IF(ter1.geo_breite IS NULL,ort1.geo_breite,ter1.geo_breite))) *COS(RADIANS(IF(ter1.geo_laenge IS NULL,ort1.geo_laenge,ter1.geo_laenge)) -".$rad_lon1." )) *1000.0) /1000.0 dist_km
FROM ".$db[0]['orte']." ort1
,".$db[0]['termine']." ter1
LEFT JOIN ".$db[0]['adressen']." vtr1
ON vtr1.id = ter1.veranstalter_id
LEFT JOIN ".$db[0]['termintypen']." typ1
ON typ1.id = ter1.typ_id
WHERE ter1.ort_id = ort1.id AND ter1.intern_kz=0 AND ter1.tag >= '".$arr_in['tag_von']."' AND ter1.tag <= '".$arr_in['tag_bis']."'
AND ROUND( 6366.19773095 * ACOS( SIN(".$rad_lat1.") *SIN(RADIANS(IF(ter1.geo_breite IS NULL,ort1.geo_breite,ter1.geo_breite))) +COS(".$rad_lat1.") *COS(RADIANS(IF(ter1.geo_breite IS NULL,ort1.geo_breite,ter1.geo_breite))) *COS(RADIANS(IF(ter1.geo_laenge IS NULL,ort1.geo_laenge,ter1.geo_laenge)) -".$rad_lon1." )) *1000.0) /1000.0 < ".$arr_in['KM']."
#ORDER BY dist_km, ter1.tag, ter1.uhr
ORDER BY ter1.tag, ter1.uhr, dist_km
LIMIT 0,20
";
Freue mich auf Ideen.
Gruß, Kalle