AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
Thema durchsuchen
Ansicht
Themen-Optionen

DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

Ein Thema von baurat · begonnen am 12. Sep 2011 · letzter Beitrag vom 24. Sep 2011
Antwort Antwort
Seite 3 von 3     123   
baurat

Registriert seit: 20. Jan 2007
34 Beiträge
 
#21

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 24. Sep 2011, 21:06
Zitat:
Bei dem VF-Treiber via ADO gibt man das Datenbank-Verzeichnis an und kann dann einfach per SQL die Tabellen ansprechen.
Das ist dann schon etwas einfacher in der Handhabung
Tataaaaaa! Hab jetzt endlich mal wieder Zeit mir das anzuschauen und auszuprobieren. Bin begeistert!

Connectionstring konnte ich bequem im Delphi zusammenklicken.

ADO-Query klappt "an sich" auch, super!

Jetzt hab ich nur diverse Probleme mit dem SQL-92 (oder ist das ein anderer?). Konkret:

a) in einer Tabelle stehen zwei Fremdschlüssel. Je nach Fall soll der eine oder der andere genommen werden und dann in der gleichen Query die Informationen aus der referenzierten Tabelle angezeigt werden.

Konkret: ich hab Teilnehmer (Stammdaten...), Kurse (Infos zu den Kursen) und Belegung (welcher Teilnehmer ist in welchem Kurs). Dummerweise gibts zwei Belegungen (1. Jahr und 2. Jahr). JEtzt will ich natürlich nur die aktuell gültige Belegung haben.

Mit MySQL geht das etwa so:

select t.famname, t.rufname,
ku.bezeichnung, ku.kursname,
if(t.startjahr=2009, b.kursid_1, b.kursid2) as kursid
from belegung b, teilehmer t, kurs ku
where b.tnid = t.id
and ku.id=kursid

Hier wird also der alias aus der if-Abfrage in der where-clause verwendet.

In der ado-query klappt das aber nicht, was - wie ich inzwischen gelesen hab - daran liegt, dass ein alias nur beim order by vorkommen darf.

Außerdem gibts kein "if", sondern ein "iif", auch das hat 15min gedauert bis ich was gefunden habe...

Große Frage: wie lautet die Query in sql-92? Sorry, geht über meine eingangs gepostete Frage hinaus, vielleicht weiß es ja trotzdem jemand auf die Schnelle...?

Auf jeden Fall DANKE für den Tipp mit ADO und dem VisualFoxpro-Treiber, das ist klasse!
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#22

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 24. Sep 2011, 21:43
Viélleicht so?

Code:
select t.famname,
       t.rufname,
       ku.bezeichnung,
       ku.kursname,
       ku.id as kursid
from belegung b
inner join teilnehmer t on t.id = b.tnid
inner join kurs ku on ku.id = iif(t.startjahr=2009, b.kursid_1, b.kursid2)
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
baurat

Registriert seit: 20. Jan 2007
34 Beiträge
 
#23

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 24. Sep 2011, 23:23
Viélleicht so?

Code:
select t.famname,
       t.rufname,
       ku.bezeichnung,
       ku.kursname,
       ku.id as kursid
from belegung b
inner join teilnehmer t on t.id = b.tnid
inner join kurs ku on ku.id = iif(t.startjahr=2009, b.kursid_1, b.kursid2)

...ja, ZIEMLICH GENAU so...

Danke!

Nur für mich: anstelle einen Alias in der where-clause zu verwenden, nehme ich jetzt also immer einen (bzw. mehrere) inner join. Und aus "if" wird "iif". Bin gespannt was noch für Dialekt-Besonderheiten auftauchen...
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 24. Sep 2011, 23:27
Sei froh dass Du nicht von PL/SQL umsteigen musst. Dagegen kommt Dir jeder andere Dialekt "nackt" vor
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz