AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Benötige Hilfe bei komplexer SQL Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Benötige Hilfe bei komplexer SQL Abfrage

Ein Thema von sunfy · begonnen am 9. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Seite 2 von 2     12   
sunfy

Registriert seit: 27. Apr 2004
22 Beiträge
 
#11

Re: Benötige Hilfe bei komplexer SQL Abfrage

  Alt 10. Aug 2005, 15:38
@Omata
Deine Version funktioniert in leicht geänderter Weise.
Teilweise waren die Tabellennamen anders.

Mit dieser Anweisung funktioniert die Abfrage richtig, dauert aber ziemlich lange.
Außerdem werde ich per Eingabeaufforderung nach Person.Name, Person.Vorname und Person.ID gefragt.
Aber ich möchte doch alle Personen ausgeben lassen.

Delphi-Quellcode:
SELECT Person.Name,
       Person.Vorname,
       Max(Kathegorie1.Kath1_datum) AS [Kath1],
       Max(Kathegorie22.Kath22_datum) AS [Kath2],
       Max(Kathegorie3.Kath3_datum) AS [Kath3],
       Max(Kathegorie4.Kath4_datum) AS [Kath4]
FROM (((person
        LEFT JOIN (pers_b_kath1 LEFT JOIN Kathegorie1 ON pers_b_kath1.kath1_id = Kathegorie1.kath1_id)
          ON Person.id = pers_b_kath1.pers_id)
        LEFT JOIN (pers_b_kath3 LEFT JOIN Kathegorie3 ON pers_b_kath3.kath3_id = Kathegorie3.kath3_id)
          ON person.id = pers_b_kath3.pers_id)
        LEFT JOIN (pers_b_kath4 LEFT JOIN Kathegorie4 ON pers_b_kath4.kath4_id = Kathegorie4.kath4_id)
          ON person.id = pers_b_kath4.pers_id)
        LEFT JOIN (pers_b_kath2 LEFT JOIN (Kathegorie21 LEFT JOIN Kathegorie22
          ON Kathegorie21.Kath22_id = Kathegorie22.Kath22_id)
          ON pers_b_kath2.kath21_id = Kathegorie21.kath21_id)
          ON person.id = pers_b_kath2.pers_id
GROUP BY Person.Name, Person.Vorname;
Ausgabe:
Delphi-Quellcode:
Name Vorname Kath1 Kath2 Kath3 Kath4
Müller Peter 01.01.2005 02.02.2005 04.04.2005
Da die Abfrage zu lange dauerte, habe ich Person.id in Person.pers_id umbenannt, da die ID in der Tabelle Person Pers_ID heißt.
Jetzt geht die Abfrage richtig schnell, werde nur wieder nach Person.Name, Person.Vorname gefragt.
Allerdings gibt er bei einem leeren Feld irgendetwas aus.
Bei einem Feld, indem das Datum leer sein sollte, steht das MAX(Datum) der gesammten Tabelle Kathegorie3 drin, selbst, wenn dieses Datum gar nicht mit der Person verknüpft ist.

Delphi-Quellcode:
SELECT Person.Name,
       Person.Vorname,
       Max(Kathegorie1.Kath1_datum) AS [Kath1],
       Max(Kathegorie22.Kath22_datum) AS [Kath2],
       Max(Kathegorie3.Kath3_datum) AS [Kath3],
       Max(Kathegorie4.Kath4_datum) AS [Kath4]
FROM (((person
        LEFT JOIN (pers_b_kath1 LEFT JOIN Kathegorie1 ON pers_b_kath1.kath1_id = Kathegorie1.kath1_id)
          ON Person.Pers_id = pers_b_kath1.pers_id)
        LEFT JOIN (pers_b_kath3 LEFT JOIN Kathegorie3 ON pers_b_kath3.kath3_id = Kathegorie3.kath3_id)
          ON person.pers_id = pers_b_kath3.pers_id)
        LEFT JOIN (pers_b_kath4 LEFT JOIN Kathegorie4 ON pers_b_kath4.kath4_id = Kathegorie4.kath4_id)
          ON person.pers_id = pers_b_kath4.pers_id)
        LEFT JOIN (pers_b_kath2 LEFT JOIN (Kathegorie21 LEFT JOIN Kathegorie22
          ON Kathegorie21.Kath22_id = Kathegorie22.Kath22_id)
          ON pers_b_kath2.kath21_id = Kathegorie21.kath21_id)
          ON person.pers_id = pers_b_kath2.pers_id
GROUP BY Person.Name, Person.Vorname;
Ausgabe:
Delphi-Quellcode:
Name Vorname Kath1 Kath2 Kath3 Kath4
Müller Peter 01.01.2005 02.02.2005 23.04.1994 04.04.2005
Kathegorie3 müßte aber leer sein.
(23.04.1994 ist das größte Datum in Kathegorie3.Kath3_Datum)

Ist da vielleicht eine Klammer falsch gesetzt oder eine Variable falsch benannt?

Gruß Sunfy
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Benötige Hilfe bei komplexer SQL Abfrage

  Alt 10. Aug 2005, 15:44
ich habe mir einfach mal deine Datenbank angelegt, um besser testen zu können. Die Namen habe ich aber nicht zu 100% übernommen - sorry.

Er fragt dich nach Name und Vorname, weil es diese Spalten nicht gibt. Aus deinen Beziehungen ist ersichtlich, dass diese Spalten Pers_Name und Pers_Vorname heissen. Oder sehe ich da jetzt was falsch?

MfG
Thorsten
  Mit Zitat antworten Zitat
sunfy

Registriert seit: 27. Apr 2004
22 Beiträge
 
#13

Re: Benötige Hilfe bei komplexer SQL Abfrage

  Alt 10. Aug 2005, 16:15
ups, da hast du Recht.
Kennst meine Datenbank schon besser als ich =)

Supi, jetzt funktioniert es schon fast so wie ich es zum Schluß benötige.
Auch die Zeit ist kein Problem mehr.

Jetzt muß ich nur noch zusehen, dass nur die Datum-Datensätze einbezogen werden, bei denen das jeweilige KathegorieX.KathX_Wertung = true ist.

Gruß Sunfy
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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