AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Subselect auf einen Treffer zulassen
Thema durchsuchen
Ansicht
Themen-Optionen

Subselect auf einen Treffer zulassen

Ein Thema von Kalli · begonnen am 17. Aug 2006 · letzter Beitrag vom 18. Aug 2006
Antwort Antwort
Kalli

Registriert seit: 12. Jun 2003
Ort: Landau i.d. Pfalz
79 Beiträge
 
Delphi 2005 Enterprise
 
#1

Subselect auf einen Treffer zulassen

  Alt 17. Aug 2006, 23:01
Datenbank: DB2 • Version: 7 • Zugriff über: SQL Direct
Hallo zusammen,
folgendes Problem:
Tabelle verm01 sind die Stammdaten von Vermittlern,
Verm04 sind die Vermittlernummer je Gesellschaft. Es können aber auch mehrere Nummern je Gesellschaft vorhanden sein.

Mit der folgenden Anweisung möchte ich eine Liste erstellen.

select
a.VERMNR,a.NAME ||', '|| a.VORNAME VermName,a.Filiale,

(select GeVermNr from vd.verm04 b where b.vermnr = a.vermNr and b.Gesellsch = 'VKB') VKB_Nr,
(select GeVermNr from vd.verm04 d where d.vermnr = a.vermNr and d.Gesellsch = 'BK' ) BK_Nr,
(select GeVermNr from vd.verm04 c where c.vermnr = a.vermNr and c.Gesellsch = 'BAY') LV_Nr

from VD.VERM01 a

order by a.filiale

Das Haut prima hin, bis der erste Vermittler mit mehr als einer Nummer je Gesellschaft auftaucht. Wie kann ich die Trefferzahl um Subselect auf eins begrenzen? Mit "fetsh first row only" bekomme ich Fehlermeldungen.


???????????

Kalli
Karl Josef Ziller
  Mit Zitat antworten Zitat
omata

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

Re: Subselect auf einen Treffer zulassen

  Alt 17. Aug 2006, 23:31
Hallo Kalli,

wie wäre es so...

SQL-Code:
SELECT a.vermnr, a.name ||', '|| a.vorname VermName, a.Filiale,
       (SELECT MIN(GeVermNr)
        FROM vd.verm04 b
        WHERE b.vermnr = a.vermNr
          AND b.Gesellsch = 'VKB') VKB_Nr,
       (SELECT MIN(GeVermNr)
        FROM vd.verm04 d
        WHERE d.vermnr = a.vermNr
          AND d.Gesellsch = 'BK' ) BK_Nr,
       (SELECT MIN(GeVermNr)
        FROM vd.verm04 c
        WHERE c.vermnr = a.vermNr
          AND c.Gesellsch = 'BAY') LV_Nr
FROM vd.verm01 a
ORDER BY a.filiale
Aber ist das sinnvoll? Wenn es mehrere Zeilen gibt, welche lässt man weg? Ist es da nicht sinnvoller auch alle auszugeben...

SQL-Code:
SELECT a.vermnr, a.name ||', '|| a.vorname VermName, a.Filiale,
       b.GeVermNr VKB_Nr,
       d.GeVermNr BK_Nr,
       c.GeVermNr LV_Nr
FROM vd.verm01 a
LEFT JOIN vd.verm04 b
  ON a.vermnr = b.vermNr
     AND b.gesellsch = 'VKB'
LEFT JOIN vd.verm04 c
  ON a.vermnr = c.vermNr
     AND c.gesellsch = 'BAY'
LEFT JOIN vd.verm04 d
  ON a.vermnr = d.vermNr
     AND d.gesellsch = 'BK'
ORDER BY a.filiale
Gruss
Thorsten
  Mit Zitat antworten Zitat
Kalli

Registriert seit: 12. Jun 2003
Ort: Landau i.d. Pfalz
79 Beiträge
 
Delphi 2005 Enterprise
 
#3

Re: Subselect auf einen Treffer zulassen

  Alt 18. Aug 2006, 07:46
Hallo Thorsten

vielen Dank für die Hilfe. Es macht genau das, was ich suche. Es hätte mir gereicht, wenn irgend eine Nummer angezeigt worden wäre. So ist es allerdings besser. Jetzt muss ich nur noch verstehen, was und wie die Abfrage funktioniert.

Gibt es einen guten Buchtipp zu dem Thema SQL?

Gruß

Kalli
Karl Josef Ziller
  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 23:58 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