![]() |
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Zitat:
|
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Zitat:
|
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Zitat:
|
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Ich brauche auch noch eine zweite Abfrage aufbauend auf der hier gefragten: Die Ansprechpartnerdaten (Tel, Fax) sollen mit allen Feldern der Kundentabelle in einer Abfrage zurückgegeben werden. Ich habe es mit den Lösungen von Jumpy und rapante probiert. Beide Abfragen habe ich nach 5 Minuten Laufzeit abgebrochen. Warum ist das so langsam? Wie gehts besser? Für sich laufen die Ansprechpartner-Abfragen schnell, aber sobald die mit den Kunden verbunden werden, extram langsam.
Der Code von Jumpy mit Kunden:
SQL-Code:
oder der Code von Rapante mit Kunden
WITH BASIS AS (
-- Kunden mit Standard-Ansprechpartner Select KdNr, max(id) as id from Ansprechpartner Where Standard=true Group By KdNr UNION -- Kunden ohne Standard-Ansperchpartner Select KdNr, max(id) as id from Ansprechpartner Where KdNr not in (Select Distinct KdNr From Ansprechpartner Where Standard=true) Group By KdNr ) select * from Kunde k left join ( Select A.KdNr, A.TelefonNr, A.FaxNr From Basis B Left Join Ansprechpartner A ON A.KdNr=B.KdNr AND A.ID=B.ID ) sub on sub.KdNr = k.KdNr where k.aktiv
SQL-Code:
WITH ap AS (
SELECT Ansprechpartner.KdNr, Ansprechpartner.TelefonNr, Ansprechpartner.FaxNr, ROW_NUMBER() OVER(PARTITION BY Ansprechpartner.KdNr ORDER BY standard DESC, id DESC) AS rk FROM Ansprechpartner) select * from Kunde k left join ( SELECT ap.* FROM ap WHERE ap.rk = 1 ) sub on sub.KdNr = k.KdNr where k.aktiv |
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Wie sehen denn die Tabellendefinitionen aus?
Ist KdNr als Foreign Key definiert, bzw. gibt es Indexe? Wieviele Datensätze sind in den Tabellen vorhanden? |
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Wie sieht's so aus?
SQL-Code:
Select K.*, A.TelefonNr, A.FaxNr
from Kunde k Left join Basis B on B.KdNr=K.KdNr Left Join Ansprechpartner A ON A.KdNr=B.KdNr AND A.ID=B.ID |
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Zitat:
SQL-Code:
Jeweils über 10.000 Datensätze
create table ansprechpartner (
id integer not null, kdnr varchar(15) character set ascii not null, name varchar(50), telefonnr varchar(20), faxnr varchar(20), ... ); alter table ansprechpartner add constraint pk_ansprechpartner primary key (id); alter table ansprechpartner add constraint fk_ansprechpartner_1 foreign key (kdnr) references kunde (kdnr) on delete cascade on update cascade; create table kunde ( kdnr varchar(15) character set ascii not null, .. ); alter table kunde add constraint pk_kunde primary key (kdnr); |
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Zitat:
Alt: Left Join Ansprechpartner A ON A.KdNr=B.KdNr AND A.ID=B.ID Neu: Left Join Ansprechpartner A ON A.ID=B.ID Die (Ansprechpartner-)ID ist ja schon eindeutig einer KdNr zugeordnet?! |
AW: Nur die Telefonnummer vom ersten Ansprechpartner eines Kunden ermitteln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz