mischanj 10 Geschrieben 18. August 2011 Melden Teilen Geschrieben 18. August 2011 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) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 18. August 2011 Melden Teilen Geschrieben 18. August 2011 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 Zitieren Link zu diesem Kommentar
mischanj 10 Geschrieben 18. August 2011 Autor Melden Teilen Geschrieben 18. August 2011 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 Zitieren Link zu diesem Kommentar
wannabee 10 Geschrieben 18. August 2011 Melden Teilen Geschrieben 18. August 2011 EDITH: falsch gelesen ;) LIMIT macht keinen sinn .... Zitieren Link zu diesem Kommentar
hh2000 10 Geschrieben 20. August 2011 Melden Teilen Geschrieben 20. August 2011 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.