Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL mit Daten auch in x-Richtung (https://www.delphipraxis.net/154944-sql-mit-daten-auch-x-richtung.html)

zeras 2. Okt 2010 13:14

Datenbank: Firebird • Version: 2.5 • Zugriff über: Delphi

SQL mit Daten auch in x-Richtung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe folgende Tabellenstruktur und kann damit schon viele Auswertungen machen. Zuerst hatte ich nur ein Stringgrid als Datenanzeige, aber mit SQL habe ich viel mehr Möglichkeiten. Eines habe ich aber in SQL noch nicht hinbekommen und zwar möchte ich zu den einzelnen Maschinennummern noch in der X-Ebene die jeweiligen Datumseinträge aus "swdate" mit einblenden.
Gibt es überhaupt eine solche Möglichkeit?
Im Anhang, wie es in Excel aussieht.

SQL-Code:
create table "manus"
(
  "manu_id"   integer not null,
  "manu"   char(8),
  "kund_id"   integer,
 primary key ("manu_id")
);

create table "swdate"
(
  "manu_id"   integer,
  "datum"   date
);

create table "kunden"
(
  "kund_id"   integer not null,
  "kundenname"   varchar(100),
constraint "pk_kunden" primary key ("kund_id")
);

xZise 2. Okt 2010 13:19

AW: SQL mit Daten auch in x-Richtung
 
Das wird relativ schwierig, da du ja nicht weißt wie viele Daten es gibt. Oder wolltest du das gar nicht so in der Liste anzeigen wie auf den Screenshot?

MfG
Fabian

zeras 2. Okt 2010 13:28

AW: SQL mit Daten auch in x-Richtung
 
Zitat:

Zitat von xZise (Beitrag 1053313)
Das wird relativ schwierig, da du ja nicht weißt wie viele Daten es gibt. Oder wolltest du das gar nicht so in der Liste anzeigen wie auf den Screenshot?

MfG
Fabian

Zur Zeit habe ich in X-Richtung von einer Spalte bis ca. 12 Spalten. Aber das kann von Zeile zu Zeile unterschiedlich sein. Bei einer Zeile gibt es nur 1 Datum, bei einer anderen Zeile können dann 12 Spalten auftauchen.

alzaimar 2. Okt 2010 13:42

AW: SQL mit Daten auch in x-Richtung
 
Das nennt sich "Pivot-Tabelle".

Es ist machbar, ein SQL-SELECT Kommando zusammenzubauen, indem Du zunächst die einzelnen Maschinen ermittelst und dann ein entsprechendes SELECT zusammenbaust:

Code:
SELECT ...
Max(case when manu_id = 1 then Datum else null end) as "Maschine_mit_ID_1",
Max(case when manu_id = 2 then Datum else null end) as "Maschine_mit_ID_2",
...
from swDate
group by manu_Id
Ach so: Der o.g. Code is T-SQL für den MS-SQL Server, aber ähnlich dürfte das auch für Firebird gehen.

Alternativ kannst Du dir so eine Pivot-Tabelle auch im Speicher zusammenbauen.

zeras 2. Okt 2010 13:56

AW: SQL mit Daten auch in x-Richtung
 
Zitat:

Zitat von alzaimar (Beitrag 1053319)
[CODE=SQL]SELECT ...
Max(case when manu_id = 1 then Datum else null end) as "Maschine_mit_ID_1",
Max(case when manu_id = 2 then Datum else null end) as "Maschine_mit_ID_2",
...
from swDate
group by manu_Id

Ach so: Der o.g. Code is T-SQL für den MS-SQL Server, aber ähnlich dürfte das auch für Firebird gehen.

Alternativ kannst Du dir so eine Pivot-Tabelle auch im Speicher zusammenbauen.

OK, werde ich mal probieren. Zur Zeit habe ich nun so viele Möglichkeiten, was abzufragen durch SQL, das weiß ich gar nicht, was ich alles abfragen soll.:lol:

Sir Rufo 2. Okt 2010 14:15

AW: SQL mit Daten auch in x-Richtung
 
Diese Abfrage ergibt natürlich nicht das, was wir in dem Screenshot gesehen haben.

Hier werden ja die Maschinen in den Spalten angezeigt. Im Screenshot war da das Datum (1-12)
Eine andere Alternative ist es die Daten in einem ListView anzuzeigen.
Eine einfache Abfrage
Code:
select Maschine, Datum from foo
und die Maschine in der Caption-Zeile eintragen. Das Datum einfach mit
Delphi-Quellcode:
SubItems.Add( Datum )
Die Spaltenanzahl anpassen und gut.

alzaimar 2. Okt 2010 14:46

AW: SQL mit Daten auch in x-Richtung
 
Zitat:

Zitat von Sir Rufo (Beitrag 1053328)
Diese Abfrage ergibt natürlich nicht das, was wir in dem Screenshot gesehen haben.

alzaimar im Selbstgespräch: Wer lesen kann (bzw. Screenshots anschaut), ist klar im Vorteil.

Wie blöd von mir.:oops:

Sir Rufo 2. Okt 2010 14:53

AW: SQL mit Daten auch in x-Richtung
 
Wir verzeihen dir mal großzügig, weil heute der letzte Samstag der Woche ist :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz