iconAlle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr. | Welcome to Forum, please register to access all of our features.

» sWiZz-eL!Te-bo@rd » talk about tech » coding » [SQL]Verdopplungen filtern

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 12.09.2007, 11:01
Benutzerbild von Kruemelmonster
Moderator
 
Registriert seit: 01.2002
Ort: Zentraleuropa
Beiträge: 1.823
[SQL]Verdopplungen filtern

Ich habe hier eine SQL Abfrage:

Code:
select * from kunden as k
left outer join belegp as p
on (k.nummer = p.adressnr)
where p.Umsatz = "A"
and p.Zeilentyp = "A"
and p.Zusatz like :Marke
Es geht darum, dass wir einen Auszug erstellen können, welche Kunden von der Marke XYZ gekauft haben. Nun gibt es Kunden, die haben mehrere Artikel der Firma XYZ gekauft, und werden mit obiger Abfrage natürlich auch mehrmals in eine Tabelle exportiert.
Wie kann ich das nun verhindern? Gibt es eine möglichkeit das direkt in die SQL abfrage zu integrieren, dass wenn ein Kunde hier z. B. 5 mal auftaucht, 4 mal gelöscht wird? (Sind natürlich nicht immer 5, können beliebig mehr oder weniger sein)

thx4support
Mit Zitat antworten
  #2 (permalink)  
Alt 12.09.2007, 12:24
Benutzerbild von netpython
Moderator
 
Registriert seit: 10.2001
Beiträge: 1.099
Mit Gruppierung (GROUP BY). Gesamtumsatz kannst du dann nach SELECT-Klausel mit SUM(Feld) ermitteln. Vergiss nicht, dass du dann alle für die Abfrage relevanten Felder angibst.
Mit Zitat antworten
  #3 (permalink)  
Alt 12.09.2007, 12:59
Benutzerbild von Kruemelmonster
Moderator
 
Registriert seit: 01.2002
Ort: Zentraleuropa
Beiträge: 1.823


vielen dank! nur: die abfrage habe ich nicht selber gecoded, und verstehe deshalb leider ziemlich nichts von dem, was du sagst

kannst du den code ev. gleich mal schreiben/vervollständigen? kannst ja als felder einfach feld1, feld2 usw. schreiben, als beispiel.

dankeschön!
Mit Zitat antworten
  #4 (permalink)  
Alt 12.09.2007, 14:33
Benutzerbild von netpython
Moderator
 
Registriert seit: 10.2001
Beiträge: 1.099
Code:
SELECT feld1, feld2, SUM(feld3)
FROM kunden AS k LEFT OUTER JOIN belegp AS p ON (k.nummer = p.adressnr)
WHERE p.Umsatz = "A" AND p.Zeilentyp = "A" AND p.Zusatz LIKE :Marke
GROUP BY feld1, feld2
feld1 wäre Marke
feld2 wäre Kunde
feld3 wäre z.B. der Preis des einzelnen Produkts
Mit Zitat antworten
  #5 (permalink)  
Alt 12.09.2007, 14:53
Benutzerbild von hellcat
Moderator
 
Registriert seit: 05.2002
Ort: Schweiz
Beiträge: 697
willst du die daten denn aggregieren? falls ja, hat netpython bereits die loesung beschrieben, falls du einfach nur duplikate rausfiltern willst wuerde ein:
select distinct feld1, feld2 from kunden ...
reichen

/hc

p.s. bei sql abfragen ist es immer hilfreich die definitionen der involvierten tabellen mit zu liefern...
__________________
"Text messaging being a modern technology that allows average people to display their functional illiteracy in a much more compact format."
Mit Zitat antworten
  #6 (permalink)  
Alt 12.09.2007, 16:13
Benutzerbild von Kruemelmonster
Moderator
 
Registriert seit: 01.2002
Ort: Zentraleuropa
Beiträge: 1.823
was zum teufel heisst aggregieren?!

ich kenn mich mit sql halt gar nicht aus.
ich kann aber in unserer Auftragsverwaltung eigene sql-abfragen für gewisse auswertungen selber erstellen.
jede abfrage erstellt mir einfach eine tabelle. wenn ich also bei obiger abfrage eine marke, z.b. yamaha, eingebe, erstellt das mir eine tabelle mit allen kunden die einen artikel der marke yamaha gekauft haben. und zum teil haben die eben mehrere artikel von yamaha gekauft, und erscheinen deshalb mehrmals in der tabelle.

mein ziel ist nun ganz einfach, dass alle kunden nur einmal dort erscheinen, danz egal wie viele artikel sie von yamaha gekauft haben.

ich dachte irgendwie, das wäre einfacher

wenn mal jemand im starbucks in bern ist, kann er ja gleich noch bei mir vorbeischauen....
Mit Zitat antworten
  #7 (permalink)  
Alt 12.09.2007, 17:22
Benutzerbild von hellcat
Moderator
 
Registriert seit: 05.2002
Ort: Schweiz
Beiträge: 697
kannste mal den output deiner ersten query posten und dann zeigen, wie es eigentlich aussehen sollte?
kundendaten kannst du ja anonymisieren... Meier -> A, Mueller -> B, etc.

aggregieren: aggregieren - Duden - Das gro??e Fremdw??rterbuch
__________________
"Text messaging being a modern technology that allows average people to display their functional illiteracy in a much more compact format."
Mit Zitat antworten
  #8 (permalink)  
Alt 14.09.2007, 11:32
Administrator
 
Registriert seit: 10.2001
Ort: 127.0.0.1
Beiträge: 6.087
hier der Anhang
Angehängte Grafiken
Dateityp: png Untitled-2.png (9,0 KB, 8x aufgerufen)
__________________
Administrator - sWiZz-eL!Te

love 1s *!(not= atoi(let
Mit Zitat antworten
  #9 (permalink)  
Alt 14.09.2007, 11:45
Benutzerbild von Kruemelmonster
Moderator
 
Registriert seit: 01.2002
Ort: Zentraleuropa
Beiträge: 1.823
Hat sich erledigt, sCHween, ich liebe dich

Geändert von Kruemelmonster (14.09.2007 um 13:35 Uhr)
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an




Search Engine Optimization by vBSEO 3.2.0