MySQL50Connection und join
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...
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...
- af0815
- Lazarusforum e. V.
- Beiträge: 6198
- 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:
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).
Also sowas hier sollte reichen:
1. Tabelle: idtab1: primary key, integer
2. Tabelle: idtab2: primary key, integer, idxtab1: integer
einsollte zu meinem Problem führen.
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
- af0815
- Lazarusforum e. V.
- Beiträge: 6198
- 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:
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.
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
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).
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...
- af0815
- Lazarusforum e. V.
- Beiträge: 6198
- 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:
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).
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)
- af0815
- Lazarusforum e. V.
- Beiträge: 6198
- 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:
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).