Hackschnitzel Geschrieben 23. November 2006 Geschrieben 23. November 2006 Hallo Leute, ich hab zwei Fragestellungen auf eine Tabelle, komme aber irgendwie auf kein Ergebniss. Ich hoffe von euch kann mir jemand helfen. Ich hab folgende Tabelle: Bestellnummer Artikel Preis 0001 Cola 10 0001 Bier 10 0001 Sprudel 20 0002 Bier 20 0002 Cola 10 0003 Limo 15 0003 Sprudel 10 0003 Cola 20 ... ... ... Tabelle ist natürlich superlang! Meine erste Fragestellung wäre: Wieviel Bestellungen mit 3 Artikel gibt es? Meine zweite Fragestellung wäre: Wie ist der Durchschnittspreis aller Bestellungen mit Bier und wie der Durchschnittspreis aller Bestellungen ohne Bier? Ich hoffe ihr wisst wie ich es meine. Schonmal Danke im Vorraus. Gruss Hackschnitzel Zitieren
Hackschnitzel Geschrieben 24. November 2006 Autor Geschrieben 24. November 2006 Ganz normal in SQL. Es kann auch eine Prozedur sein, aber am liebsten wäre mir ne ganz einfache Select-Anweisung. Zitieren
Monty82 Geschrieben 24. November 2006 Geschrieben 24. November 2006 //Tabelle test (t_bstNr INT, t_article VARCHAR, t_preis FLOAT) //Bestellungen mit 3 Artikeln SELECT t_bstNr FROM test GROUP BY t_bstNr HAVING COUNT(t_bstNr) = 3; //DS-Preis der Artikel aller Bestellungen mit Bier SELECT t1.t_bstNr, (SUM(t1.t_preis) / COUNT(t1.t_bstNr)) fPreisDS FROM test AS t1 LEFT JOIN test AS t2 ON t2.t_bstNr=t1.t_bstNr AND t2.t_article='Bier' WHERE t2.t_bstNr IS NOT NULL GROUP BY t1.t_bstNr; //DS-Preis der Artikel aller Bestellungen ohne Bier SELECT t1.t_bstNr, (SUM(t1.t_preis) / COUNT(t1.t_bstNr)) AS fPreisDS FROM test AS t1 LEFT JOIN test AS t2 ON t2.t_bstNr=t1.t_bstNr AND t2.t_article='Bier' WHERE t2.t_bstNr IS NULL GROUP BY t1.t_bstNr; Zitieren
Hackschnitzel Geschrieben 24. November 2006 Autor Geschrieben 24. November 2006 Das werde ich sofort mal versuchen. Danke. Zitieren
Hackschnitzel Geschrieben 24. November 2006 Autor Geschrieben 24. November 2006 Also das erste hat wunderbar funktioniert. Das zweite zwar auch, aber ich brauch es ein bissl anders. Wenn ich nochmal auf das Beispiel gehe, dass ich oben geschrieben hab. Nehmen wir an, es gab nur diese drei Bestellungen. Dann möcht ich das folgendermaßen: Mit Bier: Hier hab ich Bestellung 0001. Also mach ich 10 + 10 + 20 = 40 Dann hab ich Bestellung 0002. Also mach ich 20 + 10 = 30. Jetzt nehm ich die 30 (Preis 0001) + 40 (Preis 0002) / 2 (Anzahl Bestellungen) Mein Durchschnittspreis aller Bestellungen mit Bier ist 35 €. Ohne Bier: Hier hab ich Bestellung 0003. Also mach ich 15 + 10 + 20 = 45 Jetzt nehm ich die 45 (Preis 0003) / 1 (Anzahl Bestellungen) Mein Durchschnittspreis aller Bestellungen ohne Bier ist 45 €. Es ist bestimmt eine super einfache Abfrage, aber ich komme einfach nicht drauf. Gruss hackschnitzel Zitieren
Jasper Geschrieben 24. November 2006 Geschrieben 24. November 2006 Es ist bestimmt eine super einfache Abfrage, aber ich komme einfach nicht drauf. select avg(preis) from (select sum(preis) preis from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid); die zweite sieht genauso aus, nur statt 'not in' statt 'in'. -j Zitieren
Hackschnitzel Geschrieben 28. November 2006 Autor Geschrieben 28. November 2006 Geht auch irgendwie nicht. Am besten geklappt hat die Abfrage von Monty82, allerdings brauch ich nicht den Durchschnittspreis der einzelnen sondern allen zusammen. Ich hätt noch ne Fragestellung. Wie muss die Abfrage aussehen, wenn ich wissen will welche Artikel kommen zweimal unter einer Bestellnummer vor ? Zum Beispiel bei dieser Tabelle: Bestellnummer Artikel Preis 0001 Cola 10 0001 Bier 10 0001 Sprudel 20 0002 Bier 20 0002 Cola 10 0003 Limo 15 0003 Sprudel 10 0003 Sprudel 20 ... Gruss Hackschnitzel Zitieren
Jasper Geschrieben 28. November 2006 Geschrieben 28. November 2006 Geht auch irgendwie nicht. gehts irgendwie genauer? was geht nicht? -j Zitieren
Hackschnitzel Geschrieben 30. November 2006 Autor Geschrieben 30. November 2006 Zunächst hat er mir was gebracht, wie UDFCALLNAME zwischen ) und ;. Dann hab ich dran rumgeschraubt. Und es kamen nur Fehlermeldungen. Ich muss es nochmal versuchen, dann schreib ich genaueres. Ich hab das gefühl, das er keine select anweisung im from Teil machen kann. Ich dachte immer, das das gar nicht geht? Zitieren
Monty82 Geschrieben 30. November 2006 Geschrieben 30. November 2006 Welches DMBS und welche Version wird verwendet? Zitieren
Hackschnitzel Geschrieben 30. November 2006 Autor Geschrieben 30. November 2006 Wegen der Versionsnummer muss ich mal genauer nachschauen, da ich einen SQL Assistenten in einem anderen Programm nutze. Ich hab das Problem aber jetzt gelöst. Ich habs folgendermaßen gemacht: 1. Summe aller Preise in den betreffenden Bestellungen: select sum(preis) from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid; 2. Anzahl Bestellungen, in denen Bier vorkommt: select count(bestellnummer) from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid; 3. Hab Summe durch Anzahl geteilt und hab nun mein Ergebnis. Umständlich, aber ging. Dennoch danke für die Hilfe. Jetzt hab ich nur noch ein Problem. Und zwar: Wie muss die Abfrage aussehen, wenn ich wissen will wieviel Artikel kommen zweimal unter einer Bestellnummer vor ? Oder Wieviel Bestellungen enthalten zweimal den gleichen Artikel? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.