SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 07.08.2003, 10:17:01
alaska alaska ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 7
Knifflige SELECT Abfrage

Hallo,
ich habe Probleme mit einer SELECT Abfrage, stundenlang probiert - ich finde keine passende Lösung.

Meine Abfrage lautet

SELECT * FROM $dbtable (alle Spalten sollen zu sehen sein)
WHERE userid='vb150' (nur die Einträge von VB150)
ORDER BY firmenname,ldatum DESC (sortiert nach 1.Kriterium: Firmenname, 2.Kriterium: die letzten TIMESTAMP Einträge nach oben)

Das funktioniert soweit wunderbar.
Ich möchte nun aber erreichen, daß von jedem Eintrag mit gleichem Firmenname nur der letzte Eintrag angezeigt wird.

Hat jemand eine Idee, wir ich das in den Griff kriegen kann?

Sonnige Grüße,
Stefan
Mit Zitat antworten
  #2  
Alt 07.08.2003, 10:59:48
MiH MiH ist offline
Member
 
Registriert seit: Aug 2002
Beiträge: 775
select distinct(firmenname) from table ....
Mit Zitat antworten
  #3  
Alt 07.08.2003, 11:36:58
alaska alaska ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 7
Nun,

SELECT DISTINCT firmenname FROM $dbtable WHERE userid='vb150' ORDER BY ldatum DESC

funktioniert prima - ich bekomme jeden firmenname jeweils nur 1x angezeigt. Es sollen aber alle anderen Spalten auch angezeigt werden und sobald ich solche wie hier

SELECT DISTINCT firmenname, ldatum, vb FROM $dbtable WHERE userid='vb150' ORDER BY ldatum DESC

mit aufzähle, erhalte ich als Ergebnis wieder alle Zeilen, also nicht nur die letzten Einträge von je 1x firmenname.

Danke aber für den Tipp, vielleicht kriege ich es noch gebacken ...
Stefan
Mit Zitat antworten
  #4  
Alt 07.08.2003, 13:15:38
Marilu Marilu ist offline
Member
 
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
Spiele doch mal hiermit ein wenig:

SELECT * FROM $dbtable ... GROUP BY firmenname
Mit Zitat antworten
  #5  
Alt 07.08.2003, 13:43:43
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
Hi Stefan,

eine andere Möglichkeit, den letzten Eintrag zu finden ist mit dem "MAX-CONCAT"- Trick (in Google gefunden):

[ZITAT]

SELECT name,MAX(CONCAT(date,'|',town,'|',id)) FROM pa GROUP BY name;

Because 'date' now is the first part of the value that goes into MAX(), the
highest date will be found. This is not magic, it is because the mysql date
format (yyyy-mm-dd) will sort correctly in a string context. Dates stored in
a "dd-mm-yyyy" format would not work in this case: 31th january would be
'later than' 30th december.

Splitting the output column on the "|" character should be easy using any
scripting language.

[/ZITAT]


Ich habe obiges aber nicht getestet und kann Dir da leider keine Garantie geben, daß es wirklich klappt. Es klingt aber ziemlich logisch.

HTH,

Andy
__________________
Delphine, Wale, Orcas und mee(h)r:
tauchen in Alor/Indonesien
http://www.alor-dive.com
Mit Zitat antworten
  #6  
Alt 07.08.2003, 16:48:06
alaska alaska ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 7
Hi Andy,

leider kriege ich es mit MAX-CONCAT auch nicht gebacken.

Aber vielen Dank für Dein googeln!

Sollte ich noch eine Lösung finden, gebe ich diese natürlich hier noch bekannt.

Grüße,
Stefan
Mit Zitat antworten
  #7  
Alt 08.08.2003, 13:44:45
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
Hi Stefan,

schade, daß es damit auch nicht klappt. Im schlimmsten Fall musst Du halt 2 oder gar mehrere SELELCTs durchführen, um an Dein Ergebnis zu kommen. Das ist zwar nicht schön, aber manchmal unausweichlich. Eventuell kann Dir da auch eine Temporäre Tabelle (wird hinterher wieder gelöscht) einiges an Arbeit und Zeit sparen, damit habe ich aber selber noch nie arbeiten müssen und kenne mich daher auch nicht aus.

HTH,

Andy Maurer
__________________
Delphine, Wale, Orcas und mee(h)r:
tauchen in Alor/Indonesien
http://www.alor-dive.com
Mit Zitat antworten
  #8  
Alt 12.08.2003, 18:12:13
alaska alaska ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 7
Hallo Andy und alle anderen.

Über ein anderes Forum bekam ich von einem Teilnehmer eine passende Lösung, die quasi so ausschaut, wie Andy das schon vorgeschlagen hat, nämlich über eine Schleife und doppelter SELECT Abfrage.
Diese Lösung möchte ich Euch natürlich nicht vorenthalten.

Danke nochmal an dieser Stelle an alle, die sich mit dem Problem auseinander gesetzt haben! Klasse!


##########
$k=0;
$mys_first=mysql_query("SELECT DISTINCT firmenname FROM vertriebsspiegel WHERE userid='vb150'");
while ($i=mysql_fetch_array($mys_first)) {
$mys_second=mysql_query("SELECT * FROM vertriebsspiegel WHERE firmenname='$i[firmenname]'");
while ($j=mysql_fetch_array($mys_second)) {
if ($j[ldatum]>$k) {
$k=$j[ldatum];
$erg_firmenname=$j[firmenname];
$erg_ort=$j[ort];
$erg_aktivitaet=$j[aktivitaet];
// ... und vieles mehr ... Am Ende bleibt der größte Wert
}
}
print "Letzte Aktivität für $erg_firmenname in $erg_ort: $erg_aktivitaet<br>"; // Ausgabe
$k=0;
}
##########
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt