- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


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

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-02-2005, 14:14
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.756
Quetschi befindet sich auf einem aufstrebenden Ast
Standard [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
Mit Zitat antworten
  #2 (permalink)  
Alt 16-02-2005, 14:16
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #3 (permalink)  
Alt 16-02-2005, 14:17
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #4 (permalink)  
Alt 16-02-2005, 14:28
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #5 (permalink)  
Alt 16-02-2005, 14:30
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.756
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

@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
Mit Zitat antworten
  #6 (permalink)  
Alt 16-02-2005, 14:31
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #7 (permalink)  
Alt 16-02-2005, 14:31
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.756
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

@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*
Mit Zitat antworten
  #8 (permalink)  
Alt 16-02-2005, 14:33
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #9 (permalink)  
Alt 16-02-2005, 14:34
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #10 (permalink)  
Alt 16-02-2005, 14:36
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #11 (permalink)  
Alt 16-02-2005, 14:38
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.756
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

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??
Mit Zitat antworten
  #12 (permalink)  
Alt 16-02-2005, 14:39
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #13 (permalink)  
Alt 16-02-2005, 15:29
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #14 (permalink)  
Alt 16-02-2005, 15:47
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #15 (permalink)  
Alt 16-02-2005, 16:10
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.756
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

E-Mail-Coder Generator ansehen E-Mail-Coder Generator

E-Mail-Coder Generator, komplett in deutscher Sprache. Mit diesem Generator können Sie Ihre E-Mail-Adresse codieren und so gegenüber Spidern schützen.

23.05.2012 fullmedia | Kategorie: PHP/ Mail
EMO Realty Manager ansehen EMO Realty Manager

EMO Realty Manager is a complete realty listing management solution software. It is easily customized to reflect your creativity whether you are starting from scratch or integrating into an existing web site. EMO Realty Manager can be used to promote re

23.05.2012 myrephp | Kategorie: PHP/ Anzeigenmarkt
MatPo Image Hosting Script ansehen MatPo Image Hosting Script

Mit diesem PHP-Script (mini CMS) kann man .jpg, .gif und .png-Dateien auf den Server laden. Bildergröße beim Hochladen änderbar sowie eine Beschreibung zum Bild angegeben werden kann. Damit das Webspace nicht missbraucht werden kann gibt es jetzt auch

23.05.2012 MatPo | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:50 Uhr.