Jump to content

Bei Abfrage nur einen Datensatz ausgeben.


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Liebe Forumgemeinde,

 

ich benötige mal wieder eure Hilfe...

Es gibt eine SQL Abfrage in der ich mehrere Daten auslese und aufliste.

 

Momentan zeigt er mir so viele Datensätze(da mehrere Ansprechpartner sind) wie einem Kunde zuwiesen sind.

Sprich:

Kunden.KDnr 1 Anschrift1 Ansprechpartner1

Kunden.KDnr 1 Anschrift1 Ansprechpartner2

Kunden.KDnr 1 Anschrift1 Ansprechpartner3

Kunden.KDnr 2 Anschrift1 Ansprechpartner1

Kunden.KDnr 2 Anschrift1 Ansprechpartner2

aber eigentlich hätte ich es lieber wenn pro Kunde nur eine Zeile angezeigt wird und irgendein Ansprechpartner (erste oder letzte..) genommen wird.

 

Meine Abfrage hänge ich an, es wäre super wenn mir jemand helfen könnte.

 

Danke.

 

SELECT Kunden.KDnr as Kunde, Anschriften.Name1, Anschriften.Name2, Anschriften.Name3, Kunden.Branche1, Anschriften.Strasse,

Anschriften.PLZ, Anschriften.Ort, Ansprechpartner.Geschlecht, Ansprechpartner.Vorname, Ansprechpartner.Nachname, Kunden.Telefon

 

FROM Kunden INNER JOIN

Ansprechpartner Ansprechpartner ON Ansprechpartner.KDID = Kunden.KDID INNER JOIN

Anschriften Anschriften ON Kunden.KDID = Anschriften.KDID

WHERE (Kunden.Status = 0)

Link zu diesem Kommentar

Moin,

 

was soll das für einen Sinn haben? Die Logik der Datenbank besagt, dass es mehrere AP pro Kunde geben kann. Wenn du jetzt deine Kunden auswerten willst, würde die Ausgabe von "irgendeinem" AP aus der vorhandenen Liste doch irreführende Ergebnisse produzieren. Um nicht zu sagen: Es sieht ganz danach aus, als würdest du hier die falsche Datenbasis abfragen.

 

Ansonsten: Du könntest mit einer Gruppierung nach Kunde arbeiten und für den Ansprechpartner z.B. die MAX-Funktion verwenden. Das erzeugt in dem Fall aber sehr viel Code und ist alles andere als performanceneutral. Daher gebe ich auch keinen Beispielcode dazu, weil ich nicht Schuld daran sein will, wenn bei euch plötzlich "die Datenbank langsam" ist.

 

Gruß, Nils

Link zu diesem Kommentar

Danke erstmals für deine ausführliche Erklärung.

1.Die Abfrage ist schon richtig.Da wir nur so zu sagen für Statistik nur ein (irgendein) AP für je Kunde brauchen.

2.Mit max wollte ich testen -es hat bei mir nicht wirklich geklappt.Wahrscheinlich machte ich irgendwas falsch.Deswegen einen Beispielcode wäre sehr hilfreich.

Eventuelle Performanceprobleme sind mir bewusst.

 

Hier gibt es keine Schuldige-nur Helfer :-)

 

Gruß mischanj

Link zu diesem Kommentar

Moin,

 

falls Ihr den Ansprechpartner nicht braucht, lasst ihn doch einfach weg oder wenn die Spalte gewünscht wird, dann nimm eine Konstante wie

 

'APName' AS Ansprechpartner.

 

Den ersten Anprechpartner den die Abfrage findet, bekommst du sonst mit einer korrelierenden Unterabfrage (Bei jeder Zeile der Hauptabfrage wird hier die Unterabfrage ausgeführt).

 

z.B.

 

SELECT KundenID, (SELECT TOP 1 APName FROM T_AP WHERE T_AP.KundenNr = T_Kunden.KundenID)

FROM T_Kunden

 

Gruß Kai

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...