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 03-12-2008, 11:10
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Question [SQL allgemein] Group by und Order by - Höchste ID

Hi,
folgende Frage.
Wie in einem Forum werden bestimmte Datensätze ausgegeben und absteigend angezeigt entsprechend einer bestimmten Gruppe.

PHP-Code:
GROUP BY user_id ORDER BY mailbox_id DESC LIMIT ".$start.",".$pageadd); 
Es wird jede Gruppe nur einmal angezeigt, jedoch sollen die Gruppen absteigend nach Ihren beinhalteten IDs angezeigt werden.
Das heißt, die Gruppe mit der neusten ID ganz nach oben usw.
Gibt es dafür eine Funktion in sql?
Mit Zitat antworten
  #2 (permalink)  
Alt 03-12-2008, 11:36
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

was ist denn mailbox_id? bzw wo steht das neuste Datum? Du bist immer recht spärlich mit deinen Informationen..die gesamte Query wäre nie schlecht
OffTopic:

für welche Firma arbeitest du eigentlich oder machst du das privat?

Mit Zitat antworten
  #3 (permalink)  
Alt 03-12-2008, 11:40
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von krel
was ist denn mailbox_id? bzw wo steht das neuste Datum? Du bist immer recht spärlich mit deinen Informationen..die gesamte Query wäre nie schlecht
OffTopic:

für welche Firma arbeitest du eigentlich oder machst du das privat?

Ich arbeite in der Firma. (azubi)
Und ich und mein Azubikollege bekommen Projekte auf, um in den 3 Jahren zu lernen.

mailbox_id ist die auto_increment id.
Mit Zitat antworten
  #4 (permalink)  
Alt 03-12-2008, 11:41
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

lernen ist immer gut
wie sieht denn dein Tabellenschema aus? und die gesamte Abfrage fehlt noch
Mit Zitat antworten
  #5 (permalink)  
Alt 03-12-2008, 11:41
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$mysql_result mysql_query("SELECT user_nick,
                                        user_id,
                                        mailbox_id,
                                        mailbox_fromid,
                                        mailbox_toid,
                                        mailbox_timestamp,
                                        SUM(mailbox_status) as mailbox_status,
                                        mailbox_subject
                                    FROM mailbox,
                                        user
                                    WHERE mailbox_toid = "
.$_SESSION['id']."
                                    AND user_id = mailbox_fromid
                                    GROUP BY user_id ORDER BY mailbox_id DESC LIMIT "
.$start.",".$pageadd); 
Mit Zitat antworten
  #6 (permalink)  
Alt 03-12-2008, 11:47
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich versteh noch nicht ganz was du willst..
mailbox sind deine "Gruppen" und die enthalten Nachrichten?
Dann muss du nen Join auf die nachrichtentabelle machen und dann nach dem dortigen Timestamp sortieren
Mit Zitat antworten
  #7 (permalink)  
Alt 03-12-2008, 11:54
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Tabelle Mailbox beinhaltet Nachrichten, von wem Sie sind und zu wem Sie gehen sollen, eine eindeutige id (mailbox_id) und noch andere Infos.

Tabelle User beinhaltet Usernamen, Useremail etc.

Nun lasse ich anzeigen, wenn Nachrichten in der Tabelle "Mailbox" für mich vorhanden sind.
Wird zurückgeschrieben und wieder geantwortet und so weiter, lasse ich nicht jede Nachricht einzeln anzeigen, sondern nur einmal den Namen des Absenders.
Wenn ich den dann anklicke, werden alle Nachrichten zwischen diesen personen in chronologischer reihenfolge angezeigt.

WENN jedoch ich nun auf der Übersicht bin, auf der nur ein einziges mal ein Username auftaucht und dieser User hat eine neue Nachricht an z.b. mich geschickt, dann soll dieser User logischer weise ganz oben stehen.

Im Prinzp sollen die Group By User so angeordnet werden, das derjenige mit der neusten id oben steht und der älteste unten.

Eigentlich exakt wie hier im Forum mit den Threads !
Mit Zitat antworten
  #8 (permalink)  
Alt 03-12-2008, 12:06
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und wie sieht das ergebnis deiner Abfrage aus? wenn mailbox_id sich bei jeder Nachricht erhöht, dann sollte da auch immer die neuste drin stehen..
versuch aber mal folgendes:

PHP-Code:
$mysql_result mysql_query("SELECT user_nick,
                                        user_id,
                                        MAX(mailbox_id),
                                        mailbox_fromid,
                                        mailbox_toid,
                                        mailbox_timestamp,
                                        SUM(mailbox_status) as mailbox_status,
                                        mailbox_subject
                                    FROM mailbox,
                                        user
                                    WHERE mailbox_toid = "
.$_SESSION['id']."
                                    AND user_id = mailbox_fromid
                                    GROUP BY user_id ORDER BY mailbox_id DESC LIMIT "
.$start.",".$pageadd); 
damit wird dann jeweils die größte, also auch die neuste, id (Zeile) selektiert
Mit Zitat antworten
  #9 (permalink)  
Alt 03-12-2008, 12:09
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich glaube das dürfte funktionieren.
Ich hatte gerade den selben einfall, hatte MAX() jedoch bei
PHP-Code:
ORDER BY MAX(mailbox_id 
angesetzt.

Dankeschön
Die Logik von SQL ist wohl simpel, man muss sie aber erstmal verstehen lernen *schäm*
Mit Zitat antworten
  #10 (permalink)  
Alt 03-12-2008, 12:11
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

bekommt ihr denn keine Ünterstützung von den "alten Hasen" bei euch? bzw in der Schule?
Mit Zitat antworten
  #11 (permalink)  
Alt 03-12-2008, 12:14
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von krel
bekommt ihr denn keine Ünterstützung von den "alten Hasen" bei euch? bzw in der Schule?
Nein. Wir bekommen ein Projekt auf, werden mit Projektplanungen beworfen und müssen loslegen.
Uns hilft keiner. Wir sind Zwei Azubis und der Rest der Mitarbeiter verbunkert sich in Ihren Abteilungen.
Wenn man die mal Fragt, sagen die einem immer das sie es nicht wüssten.

Wir leben hier nur vom Manual.
Dann gibt man uns auf sich mit mssql, mysql, ldap systemen, c# und VB auseinander zu setzen.
Das ist einfach zuviel Input und man bringt alles durcheinander

Arbeite in Hannover als FIAE

(PostScriptum: MAX() funktioniert nicht )
Mit Zitat antworten
  #12 (permalink)  
Alt 03-12-2008, 12:18
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sie sql_query mit dem MAX() gibt aus:

PHP-Code:
user_nick  user_id  MAX(mailbox_id)  mailbox_fromid  mailbox_toid  mailbox_timestamp  mailbox_status  mailbox_subject  
Administrator 17 27 17 17 1228298219 1 asd 
Klaudia 21 20 21 17 1228210528 0 Hi Admin 2 
Es sind auch nur 2 Testaccounts.
Jedoch wird der Account, der die neuere ID enthält, nich oben angesetzt.
Mit Zitat antworten
  #13 (permalink)  
Alt 03-12-2008, 12:20
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also für mich ist 27 größer als 20 und somit doch die neuere Nachricht oder?
OffTopic:

aber ihr geht doch auch zur BBS oder? was lernt ihr denn dort?

Mit Zitat antworten
  #14 (permalink)  
Alt 03-12-2008, 12:27
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von krel
also für mich ist 27 größer als 20 und somit doch die neuere Nachricht oder?

Eigentlich schon! Ich habe die Tabelleneinträge und die Queryausgabe mal hochgeladen:


Zitat:
OffTopic:

aber ihr geht doch auch zur BBS oder? was lernt ihr denn dort?

OffTopic:


Ja wir gehen zur MultiMedia BBS.
Was wir dort lernen?
Wir lernen Politik, Sport, Englisch, Unternehmensberatung und sonst lernen wir HTML.

Der Standard dort liegt wohl sehr tief...
Im 3 Lehrjahr gibt es dann in der BBS php und sql *kopfschüttel*
Uns wird einfach soviel abverlangt, das wir nurnoch im Internet am rumsuchen sind wir die dummen um schnellst möglich funktionen zu finden die unser Problem lösen.


Geändert von phpMorpheus2 (03-12-2008 um 12:32 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 03-12-2008, 12:35
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also irgendwie passen ausgabe und Tabelleninhalt nicht zusammen, hast du zwischen abfrage und screenshot noch was in der DB geändert?
mach mal nen Dump und häng den an
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:51 Uhr.