AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Anzeigen von Sendern(TV) sortiert nach Uhrzeit
Thema durchsuchen
Ansicht
Themen-Optionen

Anzeigen von Sendern(TV) sortiert nach Uhrzeit

Ein Thema von Cyberaxx · begonnen am 6. Mai 2011 · letzter Beitrag vom 6. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 10:52
Hallo

Ich habe ein problem damit die verschiedenen Sender nach Urzeit nebeneinander anzuzeigen.

Daten sind in MySQL gespeichert.
Zitat:
epg_channels (id, name)
epg_program (id, day, channel_id, prg_begin, prg_end, name, beschreibung)
Ich möchte die Daten nun gerne so anzeigen lassen das in der ersten Spalte die Uhrzeit steht und in den folgenden Spalten jeweils das Programm.

Uhrzeit | Pro7 | Sat1 | Vox | ...

Jeder Sender hat natürlich unterschiedliche Anfangszeiten.

Kann man das in einer Abfrage lösen?

Ich würde ungerne eine Tabelle bauen in der ich die Sender fest einbinde, wäre mir zu unflexibel..

Hat hierzu jemand einer Lösung und kann mir helfen?

MfG
Cyberaxx
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 12:32
Die Sender auf verschiedene Spalten aufzuteilen dürfte recht aufwändig sein, wenn es aber auch in einer einzigen Spalte geht, kannst Du Dir einmal GROUP_CONCAT() ansehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 12:38
Es sollten schon für jeden Sender eine Spalte sein.

Habe es im Moment so gelöst das ich 24 Abfragen habe. Für jede Stunde eine. Diese füge ich dann ins Grid ein.
Beim laden merkt man davon kaum etwas, das es für jede Stunde eine Abfrage ist.

Schön ist es dennoch auch nicht gerade.

Das GROUP_CONTACT() werde ich mir mal ansehen.

Danke
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 13:22
Es sollten schon für jeden Sender eine Spalte sein.

Habe es im Moment so gelöst das ich 24 Abfragen habe. Für jede Stunde eine. ....
mh... Bin zwar kein SQL experte aber warum 24 Abfragen?
Eine reicht doch aus, mit der aktuellen Uhrzeit -paar minuten.
bzw als increment in einer For Schleife die Uhrzeit durchselectieren.

Oder bei der manuellen Eingabe reicht auch eine Abfrage aus. Dann mit select oder findselect oder wie das heisst die Zeile nehmen der der Uhrzeit entspricht und Anzeigen.
Falls ich das da oben Missverstanden habe, dann sorry

Gruss alfold
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 13:30
Die Aufgabenstellung hat ein bißchen was von einer Pivot-Tabelle. Gibts da nix?

Ansonsten erzeugt folgende Funktion SQL für eine Art Pseudo-Pivot-Tabelle:

Die Zeile
s.Add('Where day ='+DerGesuchteTag);
muss natürlich irgendwie angepasst werden.

Wenn Stundenzeiträume gewünscht werden wird das Ganze natürlich nochetwas komplizierter...

Delphi-Quellcode:
function TForm1.SQL_Main: String;
var s : TStringlist;
begin
  s:= TStringlist.Create;
  s.Add('SELECT UHRZEIT');

  s.Add(SQL_SenderZeit);

  s.Add('FROM');
  s.Add('(');
  s.Add('Select Distinct prg_begin as UHRZEIT From epg_program');
  s.Add('Where day ='+DerGesuchteTag);
  s.Add(') D');
  Result:=s.Text;
  s.Free;
end;


function TForm1.SQL_SenderZeit: String;
var
  s : TStringList;
  q : TADOQuery;
begin
  s := Tstringlist.Create;
  q := TADOQuery.Create(nil);
  q.Connection:= ;//hier eine ADO-Connection übergeben
  q.SQL.Add('Select id, name From epg_channels');
  q.Open;
  q.First;
  while not q.Eof do
    begin
    s.Add('(');
    s.Add('Select name From epg_program');
    s.Add('Where day = '+DerGesuchteTag);
    s.Add('And prg_begin = D.Uhrzeit');
    s.Add(') As '+q.fieldbyname('name').AsString);
    q.Next;
    if not q.Eof then s.Add(',')
    end
  Result:=s.Text;
  s.Free;
  q.Free;
end;
Ralph

Geändert von Jumpy ( 6. Mai 2011 um 14:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 15:20
Ja sie soll aufgebaut sein wie eine normale Programmzeitschrift.
Delphi-Quellcode:
---------------------------------------------------------------------
05:00 | 05:50 - 05:20 | 05:30 - 10:00 ... | 05:35 - 06:15
      | Wa are Family | Die dreisten drei | Die Nanny
---------------------------------------------------------------------
07:00 | 07:30 - 07:50 | 07:20 - 08:20 ... |
      | The Big Bang | Infomercials .... |
      | ............. | ................. |
      | 07:50 - 08:20 | ................. |
      | The Big Bang | ................. |
---------------------------------------------------------------------
08:00 |
Ich habs halt nun so gelöst das ich es als 24 einzelabfragen habe Begin >= '05:00' AND begin < '06:00'
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 15:50
Moin zusammen,

so als Feierabendsaufgabe habe ich das gerade mal angeschaut. Die Query zu generieren ist schon eine gute Idee, aber das mit dem SQL in einer Abfrage funktionier so noch, sagen wir suboptimal:

Code:
----------------------------- 
     time ch prog        
----------------------------- 
     19:15 1 heute
     19:30 2 wetter
     19:45 3 Pacman
     20:00 4 Tages
     20:15 1 Kontraste
     19:35 2 Sonder
     19:45 3 Lotte
     19:00 4 Mainzel
-----------------------------
Die SQL-Abfrage mit vier Kanälen (das könnte Ralph vielleicht einbauen):
Code:
   create table prgview as
   select distinct
       tall.time as time
      ,tch1.time as ch_1
      ,tch1.prog as pg_1 
      ,tch2.time as ch_2
      ,tch2.prog as pg_2 
      ,tch3.time as ch_3
      ,tch3.prog as pg_3 
      ,tch4.time as ch_4
      ,tch4.prog as pg_4 
   from      prograw as tall
   left join prograw as tch1  on (tall.time = tch1.time) and (tch1.ch=1)
   left join prograw as tch2  on (tall.time = tch2.time) and (tch2.ch=2)
   left join prograw as tch3  on (tall.time = tch3.time) and (tch3.ch=3)
   left join prograw as tch4  on (tall.time = tch4.time) and (tch4.ch=4)
   ;
als Beipielergebnis bekommt man aus obigen

Code:
Nr. time    ch_1    pg_1         ch_2     pg_2      ch_3     pg_3      ch_4     pg_4

 1 19:00        .                   .                 .             19:00    Mainzel
 2 19:15    19:15    heute          .                 .                 .          
 3 19:30        .               19:30    Wetter       .                 .          
 4 19:35        .               19:35    Sonder       .                 .          
 5 19:45        .                   .             19:45    Lotte        .          
 6 19:45        .                   .             19:45    Pacman       .          
 7 20:00        .                   .                 .             20:00    Tages
 8 20:15    20:15    Kontrast       .                 .                 .
Habe jetzt hier kein Delphi und vielleicht kann man es auch noch optimieren, aber die Abfrage kann so mit beliebigen Zwischenzeiten umgehen.

Grüße in die Runde
Martin Schaefer

Geändert von mschaefer ( 6. Mai 2011 um 15:53 Uhr) Grund: Formatierung
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 16:16
Kanälen (das könnte Ralph vielleicht einbauen):
Code:
   create table prgview as
   select distinct
       tall.time as time
      ,tch1.time as ch_1
      ,tch1.prog as pg_1 
      ,tch2.time as ch_2
      ,tch2.prog as pg_2 
      ,tch3.time as ch_3
      ,tch3.prog as pg_3 
      ,tch4.time as ch_4
      ,tch4.prog as pg_4 
   from      prograw as tall
   left join prograw as tch1  on (tall.time = tch1.time) and (tch1.ch=1)
   left join prograw as tch2  on (tall.time = tch2.time) and (tch2.ch=2)
   left join prograw as tch3  on (tall.time = tch3.time) and (tch3.ch=3)
   left join prograw as tch4  on (tall.time = tch4.time) and (tch4.ch=4)
   ;
Das ist eine interessante Idee mit den x-fachen Joins auf sich selbst. So clever hab ich gar nicht gedacht. Auch dieses Statement läßt sich ja dynamisch generieren und das sollte das Ziel sein, denn man will das ja nicht jedes mal neu anpacken, nur weil ein Sender dazugekommen ist.

Das einzige Problem ist dabei das Ganze in einen Zeitraum zu "Zwängen", denn dann bekommt man ja pro Tabellenzelle, wenn man so will, u.U. mehrere Ergebnisse, siehe 7-8 Uhr die beiden Big Bangs.
Da würde meine Variante auf jeden Fall an die Wandfahren, ala "single-query returns more than one object". Die join-Variante ließe sich so gestalten, dass die das überlebt, glaub ich.

Delphi-Quellcode:
---------------------------------------------------------------------
05:00 | 05:50 - 05:20 | 05:30 - 10:00 ... | 05:35 - 06:15
      | Wa are Family | Die dreisten drei | Die Nanny
---------------------------------------------------------------------
07:00 | 07:30 - 07:50 | 07:20 - 08:20 ... |
      | The Big Bang | Infomercials .... |
      | ............. | ................. |
      | 07:50 - 08:20 | ................. |
      | The Big Bang | ................. |
---------------------------------------------------------------------
08:00 |
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 16:54
Du hast die Generierung ja schon auf den Weg gebracht, da konnte ich aufbauen. Man braucht noch Hilfsvariablen für Zeitbereiche, die könnte ich noch mit"between" genereiren (between 19 and 20) as Hour_19. An den Feinheiten muß ich noch feilen.

Grüße


PS: Sehe gerade, dass man auf Ch 3 um 19.45 ein geteiltes Bild hat ...
Martin Schaefer

Geändert von mschaefer ( 6. Mai 2011 um 16:56 Uhr) Grund: PS
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Anzeigen von Sendern(TV) sortiert nach Uhrzeit

  Alt 6. Mai 2011, 17:10
Das muss ich mir mal durch den Kopf gehen lassen.
Das Statement sieht bestimmt recht nett aus wenn ich alle 44 Sender anzeigen lasse.

Ist dies dann eine Temporäre Tabelle nur für die ansicht?

Das mit dem geteilten Bils, hab ich auch eben gesehen, kommt so wirklich vor, nur das es dann nach Regionen geht.
Somit starten auf einem Sender 3 Sendungen gleichzeitig aber werden in unterschiedlichen Regionen nur empfangen.
Da muss ich meinen Import nochmal ein wenig anpassen.

Was allerdings noch fehlen würde bei diesem Tabellenaufbau, ich habe natürlich zur Verdeutlichung nicht alle
Spalten angegeben. Es kommen da z.B. noch hinzu die Endzeit und die Beschreibung.
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz