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;