SQL mit join in API / Myresult [erledigt]

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Fischkopp
UDF-Programmierer
UDF-Programmierer
Beiträge: 63
Registriert: Sa, 19. Jul 2014 10:31
Wohnort: Berlin

SQL mit join in API / Myresult [erledigt]

Beitrag von Fischkopp »

Hallo,
ich kau auf meiner 1. SQL-Abfrage mit join :

Code: Alles auswählen

sqlbef="SELECT * FROM cat, cat_description WHERE cat_description.cat_id <100 GROUP by cat_name order by cat_name"
das ist ok und liefert ein korrektes Ergebnis :)
Per API habe ich immer die Anfrage wie folgt implementiert:

Code: Alles auswählen

oTbl := MyResult():New(oCon,sqlbef,table_name)
aber hier gibt es ja keinen einzelne Tabelle für table_name #-o

Hab`keine Idee, wie man das nun umsetzen soll :(
Einer von euch vielleicht ?
Danke im voraus
Zuletzt geändert von Fischkopp am Mi, 11. Feb 2015 12:45, insgesamt 1-mal geändert.
Grüße aus Berlin

Reiner
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: SQL mit join in API / Myresult

Beitrag von georg »

Hallo, Reiner -

Code: Alles auswählen

cSelect := "SELECT * FROM cat, cat_description WHERE cat_description.cat_id <100 GROUP by cat_name order by cat_name"
oResult := MyResult():new(oCon, , "cat")
oResult:openRecord(cSelect)
In meiner Implementierung von MyResult():new() habe ich es so geändert, dass nicht sofort ein "SELECT * FROM cat" ausgeführt wird, wie Hector das vorsieht. Es macht aus meiner Sicht keinen Sinn, direkt ein paar Millionen Sätze zu lesen, wenn ich nur gezielt einzelne Sätze herauspicken will.

Daher wird bei mir erst über openRecord(cSelect) das Result Set angefordert, das ich haben will.

Hilft Dir das weiter?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: SQL mit join in API / Myresult

Beitrag von AUGE_OHR »

Fischkopp hat geschrieben:

Code: Alles auswählen

sqlbef="SELECT * FROM cat, cat_description WHERE cat_description.cat_id <100 GROUP by cat_name order by cat_name"
...aber hier gibt es ja keinen einzelne Tabelle für table_name #-o
hm ... ich sehe einen "." bei cat_description.cat_id ... dann würde ich es auch mit dem "Alias" bei cat_name versuchen.

Code: Alles auswählen

SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id;
gruss by OHR
Jimmy
Benutzeravatar
Fischkopp
UDF-Programmierer
UDF-Programmierer
Beiträge: 63
Registriert: Sa, 19. Jul 2014 10:31
Wohnort: Berlin

Re: SQL mit join in API / Myresult

Beitrag von Fischkopp »

Sorry, ich habe mich etwas unklar ausgedrückt !

Das SQL-Statement ist noch etwas komplexer, liefert aber das richtige Ergebnis.
Heraus kommt ein result-set mit 3-10 Sätzen, kombiniert mit den Feldern aus cat und cat_description, wie ich es will 8)

Aber in xBase ? MyResult funktioniert ja nicht mit 2 Tabellen #-o
Ich brauche aber genau diesen result-set !

@Jimmy Da beide Tabellen die gleiche cat_id haben, muß ich eindeutig festlegen, welche zur Bedingung werden soll, sonst funktioniert die Abfrage nicht.
Mit Alias werde ich noch `ne ganze Weile nicht arbeiten, der Sinn hat sich mir noch nicht erschlossen :)
Grüße aus Berlin

Reiner
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: SQL mit join in API / Myresult

Beitrag von AUGE_OHR »

Fischkopp hat geschrieben:Das SQL-Statement ist noch etwas komplexer, liefert aber das richtige Ergebnis.
Heraus kommt ein result-set mit 3-10 Sätzen, kombiniert mit den Feldern aus cat und cat_description, wie ich es will 8)
Frage : welche Applikation über welche Schnittstelle ( ODBC ) ?

für MySQL gibt es doch die Workbench und die Console und nur die Syntax funktioniert 99.99% mit der native MySQL Schnittstelle.
Fischkopp hat geschrieben:Aber in xBase ? MyResult funktioniert ja nicht mit 2 Tabellen #-o
Ich brauche aber genau diesen result-set !

@Jimmy Da beide Tabellen die gleiche cat_id haben, muß ich eindeutig festlegen, welche zur Bedingung werden soll, sonst funktioniert die Abfrage nicht.
Mit Alias werde ich noch `ne ganze Weile nicht arbeiten, der Sinn hat sich mir noch nicht erschlossen :)
auch hier würde die Workbench mit dem SQL Editor weiter helfen was die " AS " (Alias) Syntax angeht die man beim Zugriff auf mehreren Tabellen benötigt.

wenn die Syntax und das Ergebnis dann stimmen wird per copy/paste das SQL Statement in meinen Source übertragen und ich bekomme mit MyResult() das gewünschte Ergebnis.
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: SQL mit join in API / Myresult

Beitrag von georg »

Hallo, Reiner -


was passiert denn, wenn Du das SQL-Statement so übergibst und ausführen lässt? Was kommt raus?

Wenn nichts herauskommt, welchen SQL-Fehler meldet dann das API? Hast Du das Statement mal in der MySQL-Konsole eingegeben und Dir das Ergebnis angesehen?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Fischkopp
UDF-Programmierer
UDF-Programmierer
Beiträge: 63
Registriert: Sa, 19. Jul 2014 10:31
Wohnort: Berlin

Re: SQL mit join in API / Myresult

Beitrag von Fischkopp »

So, Problem gelöst :)

MyResult(oCon2,cSqlbef,"cat,cat_description") funktioniert, man muß halt nur beide Tabellen wie im SQL-Query angeben !

Meistens ist es nur der Knoten im Kopf :badgrin:
Trotzdem Danke !
Grüße aus Berlin

Reiner
Antworten