| SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |
|

16-02-2005, 14:14
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.756
|
|
[MySql] Mit Group By bestimmten Datensatz ermitteln
Hallo Leute,
die Überschrift ist nicht so richtig aussagekräftig aber ich weiß ned wie ichs besser formulieren könnte
Mein Problem:
Ich hab folgende Tabelle:
1212 - 1 - 5
1212 - 2 - 2
3120 - 2 - 7
3120 - 3 - 3
Nun möchte ich für jeden Wert der ersten Spalte (also 1212 und 3120) den Wert aus Spalte 3 ermitteln wo Spalte 2 den kleinsten Wert enthält. Die Abfrage soll also liefern:
1212 5
3120 7
Ich glaub ich würd hier nur über ein SubSelect hinkommen, was mir leider verwehrt ist, weil mein Provider mir nur MySql 4.0.15 zur Verfügung stellt.
Gibts irgendeinen Trick wie ich zum gewünschten Ergebnis komm??
Wenn ich die komplette Tabelle abfrage könnte ich dann natürlich mit PHP schon zum gewünschten Ergebnis kommen, aber das wäre wenig performant
|

16-02-2005, 14:16
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
warum lässt du dir nicht für jeden wert aus spalte 1 den kleinsten wert aus spalte 2 liefern (1. abfrage) und fragst dann damit die tabelle nochmal ab (2. abfrage)
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

16-02-2005, 14:17
|
|
MelloPie
PHP Master
|
|
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
|
|
lies im manual über minimum dann noch gruppieren und fertig
EDIT: hab die frage nich ganz gelesen
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
|

16-02-2005, 14:28
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Das funktioniert eh nicht ... aber mit 'nem LEFT JOIN geht's ... !
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

16-02-2005, 14:30
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.756
|
|
@mrhappiness
dazu müsst ich ja für jedes Ergebniss die Tabelle ein zweites Mal abfragen, bei ca. 10000 unterschiedlichen Werten aus Spalte 1 wären das ja 10000 weitere abfragen.
@MelloPie
ganz daneben steh ich ja nun auch wieder ned  , mit Group BY und min() bekomm ich zwar den kleinsten Wert aus Spalte 2, aber nicht den dazugehörigen aus Spalte 3
|

16-02-2005, 14:31
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Deshalb sage ich ja LEFT JOIN ... !
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

16-02-2005, 14:31
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.756
|
|
@goth
mit nem LEFT JOIN??? ich arbeite ja nur auf einer Tabelle, wie kann ich da LEFT JOIN einsetzen??
EDIT:
kann man auch auf die gleiche Tabelle verweisen?? *kopfkratz*
|

16-02-2005, 14:33
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Indem Du die Tabelle noch einmal verwendest ... und die abfrage so formulierst, im rechten Teil kein Datensatz gefunden wird ... !
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

16-02-2005, 14:34
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
indem du die tabelle zweimal verwendest
FROM datenbank eigentlich_bin_ich
LEFT JOIN datenbank eine_tabelle
ach ja:
du brauchst nur zwei abfragen mit meiner methode, könntest dir ja mal implode anschauen...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

16-02-2005, 14:36
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Nur mal so als Denkansatz:
Code:
SELECT t1.spalte1, t1.spalte3
FROM Tabelle t1
LEFT JOIN Tabelle t2
ON t1.spalte1 = t2.spalte1
AND t1.spalte2 > t2.spalte2
WHERE t2.spalte1 IS NULL
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

16-02-2005, 14:38
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.756
|
|
Ihr Antwortet ja sehr schnell hier, komm kaum mit, vielen Dank hierfür
also mit dem LEFT JOIN könnts wohl hinkommen, hab nie daran gedacht eine Tabelle zweimal zu verwenden.
mit Implode();??? hmm.... ist das sinnvoll 10000 Bedingungen in eine WHERE-Klausel zu packen??
|

16-02-2005, 14:39
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Zitat:
Original geschrieben von Quetschi
mit Implode();??? hmm.... ist das sinnvoll 10000 Bedingungen in eine WHERE-Klausel zu packen??
|
Nicht wirklich ... allerdings geht's mit IN(1,2,...) ganz nett ... !
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

16-02-2005, 15:29
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Zitat:
Original geschrieben von goth
Nicht wirklich ... allerdings geht's mit IN(1,2,...) ganz nett ... !
|
Wobei du in deinem IN ja irgendwie zwei Bedingungen miteinander kombinieren müsstest
spalte1 = 5
minimum in spalte 2 dazu = 4
spalte1 = 7
minimum in spalte2 dazu = 3
zweite abfrage:
WHERE spalte1 IN (5,7) AND spalte2 IN (4, 3)
Meindest du so?
Was passiert bei der Kombination spalte1 - spalte2 = 7 - 4?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

16-02-2005, 15:47
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Ich gebe zu ... das:
Code:
WHERE (spalte1,spalte2) IN ((1212,1),(3120,2))
geht erst mit MySQL 4.1.x ...
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

16-02-2005, 16:10
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.756
|
|
Also das Beispiel von Goth war schon mehr als nur ein Denkansatz, das war gleich die ganze Lösung, so bekomm ich genau die Datensätze die ich wollte
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|