Antwort
 
Themen-Optionen
Alt 02.01.2007, 11:56 Nach oben    #1
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard Problem mit den Einschränkungen für SELECT

Ich knobel gerade an dem folgendem Problem:
Ich habe eine Tabelle mit einem Aufbau folgender Art:
ID | Datum | Produkt | Preis
1 | 2007-01-01 | A | 1.00
2 | 2007-01-01 | A | 1.10
3 | 2007-01-01 | A | 1.20
4 | 2007-01-01 | A | 1.08
5 | 2007-01-01 | A | 1.04
6 | 2007-01-01 | B | 1.14
7 | 2007-01-01 | B | 1.21
8 | 2007-01-01 | B | 1.07
9 | 2007-01-02 | A | 1.02
10 | 2007-01-02 | A | 1.45
11 | 2007-01-02 | A | 2.20
12 | 2007-01-02 | A | 1.28
13 | 2007-01-02 | B | 3.14
14 | 2007-01-02 | B | 1.41
15 | 2007-01-02 | B | 4.07
...

und das ganze dann für weitere Tage. Die Menge der Einträge ist immer unterschiedlich.
Was mich nun interessiert ist der höchste Preis eines jeden Tages beim Produkt 'A', so dass ich dann eine Liste bekomme:
3 | 2007-01-01 | A | 1.20
11 | 2007-01-02 | A | 2.20
...

Das ganze soll aber letztlich auch noch nach verschiedenen Wochentagen sortiert werden. Also zum Schluss will ich nur noch alle Ergebnisse vom Montag (oder eben auch mal ein anderer Tag) haben.

Ein
sql Code:
  1. SELECT DISTINCT(`Datum`)
  2. FROM tabellenname
  3. WHERE dayofweek(`Datum`) = 2
  4. AND `Produkt` = 'A'
bringt mir zwar schon alle Montage des einen Produktes, wenn ich das aber nun erweitere, um auch die Preise, bzw. den Höchstpreis den jeweiligen Tages zu bekommen:
sql Code:
  1. SELECT DISTINCT(`Datum`), `Preis`
  2. FROM tabellenname
  3. WHERE dayofweek(`Datum`) = 2
  4. AND `Produkt` = 'A'
  5. ORDER BY `Preis` ASC
liefert mir eben nicht nur den Eintrag mit dem höchsten Wert des jeweiligen Tages...
Und genau hier ist aber (derzeit) mein Problem.

Letztlich will ich ein ORDER BY `Datum` haben, aber ich muss wohl dem DISTINCT noch beibringen, welchen Wert er sich rauspickt, nämlich den mit dem höchsten Wert in der Spalte `Preis`.

Jemand eine Idee?
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.01.2007, 12:13 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

DISTINCT ist doch eigentlich nur ne Art GROUP BY wenn ich mich jetzt nicht irre.
Ungetestet wie immer sollte das doch gehen:
sql Code:
  1. SELECT DISTINCT(`Datum`), max(`Preis`)
  2. FROM tbl
  3. WHERE dayofweek(`Datum`) = 2
  4. AND `Produkt` = 'A';
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.01.2007, 12:46 Nach oben    #3
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

wenn ich das group by `Datum` weglasse, dann kommt die Meldung:

Zitat:
Fehler #1140 - Das Vermischen von GROUP Spalten (min(), max(), count(), ...) mit nicht-GROUP Spalten ist nicht erlaubt, sofern keine GROUP BY Klausel vorhanden ist.

Darum habe ich das entspr. erweitert.

Danke schonmal soweit - muss nun mal schauen, ob die Werte stimmen.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.01.2007, 12:51 Nach oben    #4
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

dann GROUP BY `Datum` rein und DISTINCT weglassen.
sql Code:
  1. SELECT `Datum`, max(`Preis`)
  2. FROM tbl
  3. WHERE dayofweek(`Datum`) = 2
  4. AND `Produkt` = 'A'
  5. GROUP BY `Datum`;
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.01.2007, 21:11 Nach oben    #5
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

probiere ich morgen auf der Arbeit nochmal!
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.01.2007, 07:17 Nach oben    #6
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

wunderbar!

das klappt genau so, wie es soll!

Ich habe das ganze noch mit ein paar weiteren AND-Bedingungen auf meine Bedürfnisse angepasst - das ORDER BY für das Datum - und fertig.

Mal gucken, ob ich meine Prognose nun daraus erstellen kann...
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem E-Mails zu senden Jann Hendrik Plauderecke 7 25.05.2007 21:37
Problem mit zu vielen MySQL-Querys / Grundkonzeption Chr!s PHP-Programmierung 13 27.08.2006 16:59
Your most abnormal Query Guradia Datenbanken 21 19.04.2006 00:15
Problem mit replacements Garnele PHP-Programmierung 10 19.04.2006 00:14
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:07 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44