AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Select

Ein Thema von cugar · begonnen am 20. Aug 2008 · letzter Beitrag vom 20. Aug 2008
Antwort Antwort
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#1

Problem mit Select

  Alt 20. Aug 2008, 04:17
Datenbank: InterBase • Version: 7.5 • Zugriff über: Delphi 2006 Prof.
Meine Abfrage sieht so aus:

SQL-Code:
select
k.GERAETEKUNDEID, V2.VORGANGSBEZEICHNUNG AS "VorHygieneBez", V1.VORGANGSBEZEICHNUNG AS "VorFilterBez", k.BEMERKUNG, k.FILTERWECHSEL, k.WARTUNG, k.KUNDENLIEFERMASTERID, k.VORGANGFILTER, k.VORGANGHYGIENE, k.GERAETEMASTERID, g.SERIENNR, a.ARTIKELBEZEICHNUNG, t.TYPBEZEICHNUNG
from
GERAETEKUNDE k, GERAETEN g, ARTIKELPALETTEN a, TYPEN t
JOIN GERAETVORGANG V1 ON (k.VORGANGFILTER = V1.GERAETVORGANGID)
JOIN GERAETVORGANG V2 ON (k.VORGANGHYGIENE = V2.GERAETVORGANGID)
where
k.GERAETEMASTERID=g.GERAETENID AND g.ARTIKELPALETTEMASTERID=a.ARTIKELPALETTENID AND a.TYPMASTERID=t.TYPENID
order by g.SERIENNR
Es funktioniert soweit, aber jetzt möchte ich noch eine letzte Tabelle hier mit einbinden:
Tabelle WartungHistory
HistoryID, Datum, Bemerkung, GerMasterID

Verknüpft soll die Tabelle über: GERAETEN.GeraetenID und GerMasterID werden, ich weiß dass es mit einem weiteren Join geht aber ich möchte das er mit den Datensatz (aus WartungHistory) mit dem höchsten Datum (ahb mit MAX(Datum) versucht, ging's aber nicht ) ausgibt und da komme ich nicht weiter.
Ich weiß das diese Abfrage nicht optimal ist (bin noch Anfänger), wenn jemand einen besseren Vorschlag hat, dann freue ich mich wieder was dazu lernen zu können.

Viele Grüsse
Andreas

[edit=Sharky]SQL-Tags eingefügt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Problem mit Select

  Alt 20. Aug 2008, 06:17
Hi,

ich würde das so ergänzen:
(getippt - nicht getestet)
SQL-Code:
select
  k.GERAETEKUNDEID,
  V2.VORGANGSBEZEICHNUNG AS "VorHygieneBez",
  V1.VORGANGSBEZEICHNUNG AS "VorFilterBez",
  k.BEMERKUNG,
  k.FILTERWECHSEL,
  k.WARTUNG,
  k.KUNDENLIEFERMASTERID,
  k.VORGANGFILTER,
  k.VORGANGHYGIENE,
  k.GERAETEMASTERID,
  g.SERIENNR,
  a.ARTIKELBEZEICHNUNG,
  t.TYPBEZEICHNUNG,
  max( g2.Datum )
from GERAETEKUNDE k, GERAETEN g, ARTIKELPALETTEN a, TYPEN t
JOIN GERAETVORGANG V1 ON (k.VORGANGFILTER = V1.GERAETVORGANGID)
JOIN GERAETVORGANG V2 ON (k.VORGANGHYGIENE = V2.GERAETVORGANGID)
JOIN GERAETEN G2 ON (g2.GettaetenID = GerMasterID)
where k.GERAETEMASTERID=g.GERAETENID AND g.ARTIKELPALETTEMASTERID=a.ARTIKELPALETTENID AND a.TYPMASTERID=t.TYPENID
group by
  k.GERAETEKUNDEID,
  V2.VORGANGSBEZEICHNUNG,
  V1.VORGANGSBEZEICHNUNG,
  k.BEMERKUNG,
  k.FILTERWECHSEL,
  k.WARTUNG,
  k.KUNDENLIEFERMASTERID,
  k.VORGANGFILTER,
  k.VORGANGHYGIENE,
  k.GERAETEMASTERID,
  g.SERIENNR,
  a.ARTIKELBEZEICHNUNG,
  t.TYPBEZEICHNUNG

order by g.SERIENNR
[edit]verschreibser[/edit]
Gruß
Norman
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit Select

  Alt 20. Aug 2008, 06:31
Welche Werte von Wartungshistorie benötigst du?
Markus Kinzler
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#4

Re: Problem mit Select

  Alt 20. Aug 2008, 07:06
Danke für die schnelle Hilfe, brauche das letzte(neuste) (Datum der letzten Wartung) Datum. Dachte auch schon ans Gruppieren, wußte nur nicht wie ich es anfassen soll

Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit Select

  Alt 20. Aug 2008, 07:10
Dann könntest du auch einen Subselect verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#6

Re: Problem mit Select

  Alt 20. Aug 2008, 07:24
Wie könnte es aussehen (wird'S von InterBase unterstützt?)? Kann ich dann auf Aggregatfunktionen verzichten?
  Mit Zitat antworten Zitat
automatix

Registriert seit: 1. Mai 2008
Ort: Remscheid
39 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Problem mit Select

  Alt 20. Aug 2008, 10:38
Hallo!

Nicht getestet!
Delphi-Quellcode:
select
   k.GERAETEKUNDEID,
   V2.VORGANGSBEZEICHNUNG AS "VorHygieneBez",
   V1.VORGANGSBEZEICHNUNG AS "VorFilterBez",
   k.BEMERKUNG,
   k.FILTERWECHSEL,
   k.WARTUNG,
   k.KUNDENLIEFERMASTERID,
   k.VORGANGFILTER,
   k.VORGANGHYGIENE,
   k.GERAETEMASTERID,
   g.SERIENNR,
   a.ARTIKELBEZEICHNUNG,
   t.TYPBEZEICHNUNG
from
   GERAETEKUNDE k
   join GERAETEN g
      on k.GERAETEMASTERID = g.GERAETENID
   join ARTIKELPALETTEN a
      on g.ARTIKELPALETTEMASTERID = a.ARTIKELPALETTENID
   join TYPEN t
      on a.TYPMASTERID = t.TYPENID
   JOIN GERAETVORGANG V1
      ON k.VORGANGFILTER = V1.GERAETVORGANGID
   JOIN GERAETVORGANG V2
      ON k.VORGANGHYGIENE = V2.GERAETVORGANGID
where
   g.GeraetenID in (
      select
         GerMasterID
      from
         (
            select
               GerMasterID,
               max(Datum)
            from
               WartungHistory
            group by
         )
   )
order by
   g.SERIENNR
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Problem mit Select

  Alt 20. Aug 2008, 13:35
Hi,

Zitat von mkinzler:
Dann könntest du auch einen Subselect verwenden
Bei MSSQL sind Subselects weniger performant als eine Gruppiernug,
da hierbei das Subselect für jede Datenzeile der Ergebnisdatenmenge
ausgeführt werden muss (wie das bei Interbase ist weiss ich nicht,
möglicherweise ähnlich).

@automatix
[edit]falscher text entfernt - heute ist nicht mein tag [/edit]
Gruß
Norman
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#9

Re: Problem mit Select

  Alt 20. Aug 2008, 13:51
Ich teste beides durch, Gruppierung wird wohl die beste Lösung sein.
Danke für Eure Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


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