Autor Beitrag
Steamboat Willi
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 03.02.18 20:50 
Habe zwei Tabellen mit einem Join verbunden. Die linke Seite besteht aus einigen Spalten der Haupttabelle und enthält das Feld mit dem Primärschlüssel. Die rechte Seite besteht aus einer ganzen Nebentabelle mit dem gleichen Primärschlüssel. Das habe ich mit den entsprechenden Komponenten realisiert. Wenn jetzt die Haupttabelle einen Datensatz enthält, müßte meiner Meinung nach der entsprechende Teil auch über den Join angezeigt werden, was aber nicht der Fall ist. Wie kann ich diesen Fehler beheben?

Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Sa 03.02.2018 um 20:13
Moderiert von user profile iconNarses: zweite Frage entfernt
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1102
Erhaltene Danke: 70

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: So 04.02.18 19:11 
Hallo, ich versuche gerade deine Beschreibung zu verstehen, aber mir kommt es vor als wenn Du zwei Sachen mixt.

Was hast Du gemacht?
A: Ein SQL Script geschrieben das einen JOIN enthält und Du sieht keine Feldinhalte der Nebentabelle?
B: Zwei Tabellen via Master/Detail Beziehung miteinander verbunden und es fehlen die Daten der Detail-Tabelle?

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Steamboat Willi Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 05.02.18 13:54 
ich habe ein SQL-Script mit einem Join geschrieben, das ich auf der Delphi-Oberfläche anzeigen möchte. Wenn die Haupttabelle einen Datensatz enthält, wird der entsprechende Anteil nicht im Join angezeigt.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1102
Erhaltene Danke: 70

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Mo 05.02.18 18:02 
Es ist leider nicht wirklich möglich Dir zu helfen ohne Dein SQL Script zu sehen. Gerade bei Joins ist das leider selbst dann noch schwierig da es an den Daten der Tabelle liegen kann.
Aber lass bitte erstmal das Script sehen.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Steamboat Willi Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 06.02.18 14:10 
Hier ist das Script:

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
SELECT
   b.MITGLIEDSNUMMER, b.NACHNAME,
   b.VORNAME, b.GEBURTSDATUM, a.MITGLIEDSNUMMER,
   a.STRASSE, a.LAND, a.POSTLEITZAHL, a.WOHNORT,
   a.TELEFON_PRIVAT, a.TELEFON_GESCHAEFTLICH,
   a.FAX_PRIVAT, a.FAX_GESCHAEFTLICH,
   a.TELEFON_MOBIL, a.E_POST_PRIVAT,
   a.E_POST_GESCHAEFTLICH
 FROM BASISDATEN b
  RIGHT OUTER JOIN ADRESSE a
   ON a.MITGLIEDSNUMMER = b.MITGLIEDSNUMMER


Damit werden alle Felder im Grid angezeigt, nur die Inhalte der Basisdaten nicht.

Moderiert von user profile iconChristian S.: SQL-Tags hinzugefügt
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1102
Erhaltene Danke: 70

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Di 06.02.18 15:25 
Hast Du das Script mal in einem SQL Designer oder SQL Tool zu deiner DB ausgeführt?
Ich mein, dass Du nicht mit den Grid im Programm arbeiten musst. Dann ist zumindest Ausgeschlossen dass es an dem liegen kann.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4282
Erhaltene Danke: 860


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 06.02.18 16:36 
Ich vermute du willst einen Left outer join und keinen right outer join.
Zumindest scheint mir der Fall "ich habe eine Adresse dazu aber kein Mitglied dann zeig mir wenigstens die Adresse" an nicht sinnvoll.
Steamboat Willi Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 08.02.18 13:14 
Vielen Dank, ich bin einen Schritt weiter.
Ich habe den SQL-Code in Database tour geändert:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
SELECT
   b.MITGLIEDSNUMMER, b.NACHNAME,
   b.VORNAME, b.GEBURTSDATUM,
   a.MITGLIEDSNUMMER,
   a.STRASSE, a.LAND, a.POSTLEITZAHL,
   a.WOHNORT, a.TELEFON_PRIVAT, a.TELEFON_GESCHAEFTLICH,
   a.FAX_PRIVAT, a.FAX_GESCHAEFTLICH, a.TELEFON_MOBIL,
   a.E_POST_PRIVAT, a.E_POST_GESCHAEFTLICH

 FROM ADRESSE a
  RIGHT OUTER JOIN BASISDATEN b
   ON a.MITGLIEDSNUMMER = b.MITGLIEDSNUMMER

Das wird unabhängig davon, ob ich einen LEFT oder RIGHT OUTER JOIN verwende, dort ausgeführt, d.h. die Feldinhalte "BASISDATEN" werden dort angezeigt.
Das gleiche passiert in Delphi, wenn ich dort unter "SelectSQL" die gleiche Sequenz eingebe.
Was noch nicht funktioniert, ist "INSERT into ADRESSE". Delphi hat mir hier folgenden Code erzeugt:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
insert into ADRESSE
  (MITGLIEDSNUMMER, STRASSE, LAND, POSTLEITZAHL, WOHNORT, TELEFON_PRIVAT, 
   TELEFON_GESCHAEFTLICH, FAX_PRIVAT, FAX_GESCHAEFTLICH, TELEFON_MOBIL, 
   E_POST_PRIVAT, E_POST_GESCHAEFTLICH)
values
  (:MITGLIEDSNUMMER, :STRASSE, :LAND, :POSTLEITZAHL, :WOHNORT, :TELEFON_PRIVAT, 
   :TELEFON_GESCHAEFTLICH, :FAX_PRIVAT, :FAX_GESCHAEFTLICH, :TELEFON_MOBIL, 
   :E_POST_PRIVAT, :E_POST_GESCHAEFTLICH)

Kann mir jemand hierfür einen Tip geben?

Moderiert von user profile iconNarses: SQL-Tags hinzugefügt