MySQL50Connection und join

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Beitrag von xnalpf »

Ich denke aber mal, das mit dem join war ein Fehler in den sqldb komponenten. Und die haben doch mit dem Compiler nicht wirklich vie am hut. Er meckert ja nicht über irgendwas am Programmcode sondern er mäkelt an der SQL-Syntax rum. Und die ist nun mal (wie die zeos Komponenten zeigen, denn damit geht das gleiche SQL) absolut OK.
Mag sein, dass der FPC in 2.2.0 einiges fixt. In meinem Fall wird das aber nicht helfen. Aber ich komm ja mit den zeos Komponenten jetz auch soweit klar. Ausser, dass sie sich unter Linux nicht installieren lassen. Aber das ist ein anderer Fred...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Kannst Du mir eventuell die Definition der beiden Tabellen geben, ich würde der Sache gern auf den Grund gehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Beitrag von xnalpf »

Also sowas hier sollte reichen:

1. Tabelle: idtab1: primary key, integer
2. Tabelle: idtab2: primary key, integer, idxtab1: integer

ein

Code: Alles auswählen

select * from tabelle1 join tabelle2 on idtab1 = idxtab1
sollte zu meinem Problem führen.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Ist nachvollziehbar.

Nur war bei dir 'UsePrimaryKeyAsKey' sicherlich auf active. Damit probiert die Komponente was zu machen und das geht schief.

Auszug aus dem LOG.

Code: Alles auswählen

17 Query       select `idtab1`, `idtab2`, `idxtab1` from tabelle1 left join tabelle2 on idtab1 = idxtab1
17 Query       show index from tabelle1 left join tabelle2 on idtab1 = idxtab1


Konklusion1: Schalte das Feature ab, wenn du komplexere Ausdrücke verwendest. Die automatik funktioniert leider nur bei einfacheren Statements.

Konklusion2: LOG-Leser wissen mehr :-)

Konklusion3: Ein paar Jahre Praxis helfen auch :-) (Bin da ein gebranntes Kind)

Konklusion4: Leider scheitert es immer wider an der Doku
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Beitrag von xnalpf »

Naja, so ganz glücklich bin ich mit deinen Schlussfolgerungen und auch mit den sqldb Komponenten nicht. Ich habe jahrelang mit Delphi und interbase programmiert und hatte eigentlich ähnlich sorglosen Umgang mit Datenbanken erwartet. Ein anderes Problem mit den sqldb war auch: Tabelle1 und Tabelle2 haben zwi felder mit gleichem Namen. Macht man ein join select auf beide Tabellen meckert die query über zwei Spalten mit gleichem namen. Hallo? Unter Delphi hat schon die BDE von Delphi 1.0 einfach Tabelle1.feld und Tabell2.feld daraus gemacht. Sorry, aber bei solchen Komponenten hilft auch Log lesen nicht viel. Ein paar Jahre Praxis habe ich auch schon auf dem Buckel, die Motivation mit halbgaren Komponenten auf Teufel komm raus ein Problem zu lösen wird aber immer kleiner. Der Wechsel auf zeos war goldrichtig. Da brauch ich keine Logs lesen, brauch nicht dauernd über mein Alter nachdenken und Doku lesen war eh noch nie mein Ding...

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Naja man muss aber sehn das die sqldb Komponenten erst 1 1/2 Jahre alt sind (subjektiv) Und zudem Quell offen du kannst ja gerne Verbesserungen einbringen, anstelle Borland das Geld in den Rachen zu werfen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Beitrag von xnalpf »

Ich mach seit 6 Jahren QS und hab mit Entwicklung eigentlich nix mehr am Hut. Seid froh, dass ich Borland das Geld nicht mehr in den Rachen werfe. Und eigentlich könnt ihr auch froh sein, dass ich keine Verbesserungen einbringe ;-)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Naja dann freun wir uns halt auf die Tests und Vorgaben für die Testsuite ;)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

xnalpf hat geschrieben:Naja, so ganz glücklich bin ich mit deinen Schlussfolgerungen und auch mit den sqldb Komponenten nicht. Ich habe jahrelang mit Delphi und interbase programmiert und hatte eigentlich ähnlich sorglosen Umgang mit Datenbanken erwartet. Ein anderes Problem mit den sqldb war auch: Tabelle1 und Tabelle2 haben zwi felder mit gleichem Namen. Macht man ein join select auf beide Tabellen meckert die query über zwei Spalten mit gleichem namen. Hallo?


Das mit den gleichen Namen in Tabellen habe ich zusätzlich eigentlich erwartet. Zusätzlich halte ich den * nicht unbedingt für eine gute Idee. Besonders bei Tabellenänderung später kann man da gewaltig in die Kiste springen.

Schon klar das die meisten dann recht sorglos an eine sehr komplexe Materie herangehen, wenn sie früher verwöhnt wurden. Das Problem ist, Borland hat fast schon einen intuitiven Wrapper verwendet hat, das wird oft zum Verhängnis, zusätzlich ist da MySQL auch noch wesentlich pingeliger.
Zeos hat da schon mehr intuition in die Komponeneten gepackt, um es dem Benutzer einfacher zu machen. Nur dort ist die Fehlersuche noch schwieriger.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Beitrag von xnalpf »

Das ist alles Ansichtssache. Ich mag lieber programmieren, was ich will. Und nicht das, was die Komponente für richtig hält. (Oder der Compiler, siehe hier: viewtopic.php?t=1095)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

xnalpf hat geschrieben:Das ist alles Ansichtssache. Ich mag lieber programmieren, was ich will. Und nicht das, was die Komponente für richtig hält. (Oder der Compiler, siehe hier: viewtopic.php?t=1095)

Ich habe mit Zeos auf probiert zu arbeiten, das ist aber oft sehr mühsam, wenn man relativ nahe am SVN ist. Da habe ich mittlerweise bessere Erfahrungen mit den aktuellen SQLdb gemacht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten