lostdreamer - 2:48 pm on Sep 11, 2012 (gmt 0)
How about "group by epg.id_epg" ?
This would only show every program once.
You can then use MIN(epg.start) or MAX(epg.start) to get the earliest / latest program.
SELECT epg.id_epg, epg.id_channel, epg.title, epg.description, tblTVChannels.tvChannelsLogo, tblTVChannels.tvChannelsDesc, MIN(epg.start) as earliest_time, MAX(epg.start) as latest_time
FROM epg INNER JOIN tblTVChannels ON epg.id_channel = tblTVChannels.epg_ID
WHERE epg.start < '$programDate' AND tblTVChannels.tvChannelsActive = 1
GROUP BY epg.id_epg
ORDER BY epg.start DESC