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 24-04-2008, 11:53
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 [SQL allgemein] Sortieren einer DB

Hi,
ich habe in einer DB (mailbox) viele Nachrichten abgespeichert.
Das Prinzip will ich nun ändern.
Und zwar wie ein Forum!

Sprich:
z.B. 10 Nachrichten von 3 versch. Personen.
Nun sollen nicht mehr alle Messages untereinander angezeigt werden (Oben die neusten) sondern immer nur EINE Message pro User.
Habe ich also von User1 z.B. 2 Mails bekommen, steht in meiner Mailbox aber nur 1mal der Name des Users und das eine Neue Nachricht angekommen ist, wenn ich diese öffne, kommen alle jemals mit diesem User geschriebenen Message zum vorschein, nach Datum sortiert.
Also oben die Neusten.
Im Prinzip wie ein Forum.

Hat jemand einen guten Ansatz wie ich die Messages 2 mal seperat sortieren lasse, nach Namen und Datum und nur 1 message pro User?
Mit Zitat antworten
  #2 (permalink)  
Alt 24-04-2008, 12:09
Mercury1987
 Registrierter Benutzer
Links : Onlinestatus : Mercury1987 ist offline
Registriert seit: Apr 2007
Ort: Furschweiler
Beiträge: 79
Mercury1987 ist zur Zeit noch ein unbeschriebenes Blatt
Mercury1987 eine Nachricht über ICQ schicken
Standard

hi,

ORDER BY (Sortieren)
SELECT DISTINCT (nur eine anzeigen)
Mit Zitat antworten
  #3 (permalink)  
Alt 24-04-2008, 12:10
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

Du willst also nur eine Message angezeigt haben?

Was spricht denn gegen ein:

Code:
SELECT message
FROM messages
ORDER BY datum DESC
LIMIT 1,1
??


EDIT:

@Mercury Ein Distinct würde hier nicht weiterhelfen, da es ja unterschiedliche Messages sind..

Mit Zitat antworten
  #4 (permalink)  
Alt 24-04-2008, 12:12
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 Mercury1987
hi,

ORDER BY (Sortieren)
SELECT DISTINCT (nur eine anzeigen)
Das habe ich gesucht. Danke
Mit Zitat antworten
  #5 (permalink)  
Alt 24-04-2008, 12:14
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

.... nein hast du nicht!

Das Distinct würde nur verhindern, dass die Gleiche Nachricht 2 mal selected wird.
Mit Zitat antworten
  #6 (permalink)  
Alt 24-04-2008, 12:24
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 case
.... nein hast du nicht!

Das Distinct würde nur verhindern, dass die Gleiche Nachricht 2 mal selected wird.
Richtig.
Und daher werden aus Allen meinen Nachrichten alle selectiert, die mir von versch. Usern geschickt wurden und nur 1mal jeder User auftaucht.
Mit Zitat antworten
  #7 (permalink)  
Alt 24-04-2008, 12:31
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

aber wenn ein user dir 2 verschiedene nachichten schickt, so würden sie beide auftauchen... du solltest ein GROUP BY user machen und dir da die neueste Nachricht von holen
Mit Zitat antworten
  #8 (permalink)  
Alt 24-04-2008, 12:35
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 case
aber wenn ein user dir 2 verschiedene nachichten schickt, so würden sie beide auftauchen... du solltest ein GROUP BY user machen und dir da die neueste Nachricht von holen
Ich glaube wir reden aneinander vorbei!
Es wird nur EINE EINZIGE Anzeige gemacht von Jedem User der mir jemals geschrieben hat. Egal ob Neue Nachricht oder Alte Nachricht.
Gibt es eine Neue Nachricht von einem User, so steht hinter dem Usernamen in der "Mailbox" z.B. "1 Neue Nachricht"
oder auch "5 Neue Nachrichten.
Egal wieviele Nachrichten eines User, es wird nur EINMAL der Username angezeigt und dahinter die Anzahl der evtl. neuen Nachtrichten.

Bei einer Neuen nachricht wird der User, der mir die Nachricht geschrieben hat nach ganz oben on top gesetzt.

Erst wenn ich auf den usernamen klicke in der Mailbox werden alle Gespräche zwischen mir und ihm chronologisch aufgelistet.
Mit Zitat antworten
  #9 (permalink)  
Alt 24-04-2008, 12:48
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

Na toll.
Einzelne Anzeige ist ja nur z.B. so möglich:
PHP-Code:
  $sql mysql_query('SELECT DISTINCT
                      usermailbox.textread,
                      FROM usermailbox
                      INNER JOIN user 
                      ON usermailbox.fromuserid = user.userid 
                      WHERE usermailbox.touserid = '
.$_SESSION['session_id'].'
                      ORDER BY usermailbox.usermailboxid DESC'
); 
und nicht mit mehreren Select Abfragen wie ich habe:
PHP-Code:
  $sql mysql_query('SELECT DISTINCT
                      usermailbox.textread,
                      usermailbox.fromuserid,
                      usermailbox.usermailboxid,
                      usermailbox.maildate,
                      usermailbox.mailtext,
                      usermailbox.mailsubject,
                      user.username
                      FROM usermailbox
                      INNER JOIN user 
                      ON usermailbox.fromuserid = user.userid 
                      WHERE usermailbox.touserid = '
.$_SESSION['session_id'].'
                      ORDER BY usermailbox.usermailboxid DESC'
); 
Mit Zitat antworten
  #10 (permalink)  
Alt 24-04-2008, 13:15
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

hmmm ok...

wenn du die User mit der Anzahl der Neuen Nachrichten haben willst, sortiert nach dem User, der als letztes eine Nachricht geschrieben hat musst du soetwas machen:

Code:
SELECT COUNT(M.id), U.username
FROM usermailbox AS M
INNER JOIN user AS O ON M.fromuserid = U.userid
WHERE M.touserid = '.$_SESSION['session_id'].'
   AND M.unread = 1
ORDER BY 
MAX(M.id) ASC
GROUP BY
M.fromuserid

habe ich es nun Richtig verstanden? (Dies ist der Username mit der Anzahl neuer Nachrichten, so sortiert, dass der User mit der neuesten Nachricht nach oben kommt)

M.unread habe ich mir mal ausgedacht und von M.id bin ich mal ausgegangen, dass die existiert....
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 18:01 Uhr.