Au 2 MySQL-Tabellen gleichzeitig zugreifen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

Au 2 MySQL-Tabellen gleichzeitig zugreifen

Beitrag von pjensen »

Moin,

Lazarus + MySQL mit ZEOS.

Ich will auf 2 MySQL-Tabellen aus einer Datenbank gleichzeitig zugreifen.
Ich kriegs trotz Lektüre und Google einfach nicht gebacken. :evil:
Daher hier meine Frage:

In der Datenbank "TempDat" sind u.a. folgende Tabellen:
- "Messwerte" => (ID,ID_Geraet,Jahr,MessWert)
- "Geraete" => (ID,Nummer,Ort)

Die beiden ID's sind Indexe (auto_increment)
ID_Geraet aus "Messwerte" zeigt auf ID aus "Geraete"
und ist somit eindeutig.

Jetzt will ich in ein DBGrid folgende Spalten einbringen:
[Nummer, Ort, MessWert,Jahr]. Das soll aber nur die Messwerte aus 2009 haben.


Wie lautet hierfür dis Syntax von ZQuery1.SQL.Text???

MfG, P. Jensen

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Au 2 MySQL-Tabellen gleichzeitig zugreifen

Beitrag von knight »

Hast du es schon mit der WHERE Klausel versucht?

knight

gsa
Beiträge: 9
Registriert: Fr 13. Jun 2008, 15:23
OS, Lazarus, FPC: Windows / Linux (FPC 3.2. fixes, Lazarus 3.0 fixes / trunk)

Re: Au 2 MySQL-Tabellen gleichzeitig zugreifen

Beitrag von gsa »

pjensen hat geschrieben:Moin,

Lazarus + MySQL mit ZEOS.

Ich will auf 2 MySQL-Tabellen aus einer Datenbank gleichzeitig zugreifen.
Ich kriegs trotz Lektüre und Google einfach nicht gebacken. :evil:
Daher hier meine Frage:

In der Datenbank "TempDat" sind u.a. folgende Tabellen:
- "Messwerte" => (ID,ID_Geraet,Jahr,MessWert)
- "Geraete" => (ID,Nummer,Ort)

Die beiden ID's sind Indexe (auto_increment)
ID_Geraet aus "Messwerte" zeigt auf ID aus "Geraete"
und ist somit eindeutig.

Jetzt will ich in ein DBGrid folgende Spalten einbringen:
[Nummer, Ort, MessWert,Jahr]. Das soll aber nur die Messwerte aus 2009 haben.
Abhängig davon welchen Datentyp 'Jahr' hat, schlage ich vor:

-- Jahr varchar(n)
select Nummer, Ort, MessWert, Jahr from Messwerte, Geraete where Messwerte.ID_Geraet = Geraete.ID and jahr = '2009';

-- Jahr char(5)
select Nummer, Ort, MessWert, Jahr from Messwerte, Geraete where Messwerte.ID_Geraet = Geraete.ID and jahr = '2009 ';

-- Jahr Integer
select Nummer, Ort, MessWert, Jahr from Messwerte, Geraete where Messwerte.ID_Geraet = Geraete.ID and jahr = 2009;

-- Jahr date
select Nummer, Ort, MessWert, Jahr from Messwerte, Geraete where Messwerte.ID_Geraet = Geraete.ID and jahr > '2008-12-31' and jahr < '2010-01-01';
select Nummer, Ort, MessWert, Jahr from Messwerte, Geraete where Messwerte.ID_Geraet = Geraete.ID and jahr > str_to_date('31.12.2008', '%d.%m.%y') and jahr < str_to_date('01.01.2010', '%d.%m.%y');

Gruß Gerd

pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

Re: Au 2 MySQL-Tabellen gleichzeitig zugreifen

Beitrag von pjensen »

Hallo Gerd,

danke, der ertse Tip läuft gut. Mittlerweile auch mit gehts auch mit ...Left Join...

mfg, Peter

Antworten