AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabellen verbinden

Ein Thema von Schuby · begonnen am 20. Nov 2019 · letzter Beitrag vom 21. Nov 2019
Antwort Antwort
Seite 1 von 2  1 2      
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#1

Tabellen verbinden

  Alt 20. Nov 2019, 15:38
Datenbank: *.mdb • Version: ? • Zugriff über: ADO
Hallo, jetzt muss ich doch etwas schreiben die Hilfe hier im Forum bringt mich nicht weiter.

Ich habe eine mdb Datenbank mit 2 Tabellen
Tabelle1. person
Tabelle2. urlaub

Von Tabelle1 nehme ich mir die id (counter) und speichere sie bei jeden neuen Datensatz
in Tabelle2 urlaub.user_id ab. Jetzt möchte ich mit FastReport eine Liste erstellen.

Ich denke das geht aber nur wenn ich die Tabellen verbinde, und da haut es nicht hin.

Delphi-Quellcode:
select
    person.*, urlaub.user_id
from
(person LEFT OUTER JOIN urlaub ON person.id=urlaub.user_id)
order by urlaub.user_id;

Könnt ihr mir bitte einen Tipp geben.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Tabellen verbinden

  Alt 20. Nov 2019, 16:56
und da haut es nicht hin.
Was genau haut denn nicht hin?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Tabellen verbinden

  Alt 20. Nov 2019, 17:28
Besser mit Aliasen

SQL-Code:
select
    p.*, u.user_id
from
    person p LEFT OUTER JOIN urlaub u ON u.user_id = p.id
order by
    u.user_id;
Markus Kinzler
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#4

AW: Tabellen verbinden

  Alt 20. Nov 2019, 17:30
Ich erkläre es mal genauer.

Also ich habe 2 Tabellen und diese wollte ich mit FastReport ausgeben.
In Tabelle1 ist der Name und Anschrift
In Tabelle2 die Urlaubsdaten
Nur der Müller hat Urlaub eingetragen,
aber alle anderen bekommen demn Urlaubsdaten vom Müller mit angezeigt angezeigt

Delphi-Quellcode:
Müller
25.11.2019 30.11.2019
Meier
25.11.2019 30.11.2019
Schulze
25.11.2019 30.11.2019
Da ich die id (ich habe den Counter genommen) in die Tabelle 2 bei einen neuen Datensatz schriebe kann ich die
Daten zu ordnen.

Ich dachte mir das ich die ID von Tab1 mit der ID von Tab2 joinen muss ?!
Bin ich auf den Holzweg ? Also ich sehe vor lauter Bäume den Wald nicht mehr.


mfg Schuby
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Tabellen verbinden

  Alt 20. Nov 2019, 17:34
Grundsätzlich nicht. Die Werte ohne Detaildatensatz sind NULL. Am Besten mal die Abfrage unabhängig von FastReports ausführen.
Die Reportsoftware scheint die Werte in der Anzeige nicht zurückzusetzen.
Markus Kinzler
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#6

AW: Tabellen verbinden

  Alt 20. Nov 2019, 17:44
Hierbei bekomme ich einen Fehler

Delphi-Quellcode:
select
    p.*, u.user_id
from
    person p LEFT OUTER JOIN urlaub u ON u.user_id = p.id
order by
    u.user_id;

Im Ausdruck stimmt ein Datentyp nicht überein


mfg
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Tabellen verbinden

  Alt 20. Nov 2019, 18:35
Hallo,
bitte noch einmal
Zitat:
Am Besten mal die Abfrage unabhängig von FastReports ausführen.
Ausserdem wäre es besser, beim Order By über die p.id zu gehen
order by
p.id;
weil die u.user_id ja NULL sein könnte
Heiko
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#8

AW: Tabellen verbinden

  Alt 20. Nov 2019, 18:46
Gleicher Fehler.. unabhängig von FastReports gemacht.

Delphi-Quellcode:
select
    p.*, u.user_id
from
    person p LEFT OUTER JOIN urlaub u ON u.user_id = p.id
order by
    p.id;
Fehler -> Im Ausdruck stimmt ein Datentyp nicht überein



Frage ? Kann es sein weil Table1 person.id ein Counter ist ?



mfg
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Tabellen verbinden

  Alt 20. Nov 2019, 18:57
Wenn ungewöhnliche Daten angezeigt werden und scheinbar alles stimmt, einfach mal einzeln selektieren und alles ausgeben, auch die vermeintlich gesetzten ID.

also
Code:
select * from person
und

Code:
select * from urlaub
auch nicht schlecht wäre von beiden Tabellen das Create Statement anzuzeigen / abzufragen.

Deine Frage kannst Du selber am besten beantworten, solange Du nicht den Tabellenaufbau zeigst.

"Counter" beschreibt vermutlich ein Verhalten , nicht unbedingt einen Datentyp.
Gruß, Jo
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#10

AW: Tabellen verbinden

  Alt 20. Nov 2019, 19:03
FastReport lasse ich erstmal links liegen.

Ich habe mir ADOQuery / mit einen DBGrid erstellt das ich sehe was passiert.

select * from person //ok wird angezeigt
select * from urlaub //ok wird angezeigt


Delphi-Quellcode:
Procedure TForm1.Table1_erstellen;
const
 cCRLF = #13#10;
 cCreateDaten = 'CREATE TABLE person(' + cCRLF
 + 'Id counter,'                 + cCRLF //
 + 'datum varchar(10),'                + cCRLF //
 + 'name varchar(20),'                + cCRLF //
 usw.....
Das meinte ich mit id, weil es ein Counter ist


mfg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:39 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