php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.09.2005, 12:08  
Gast
 
Beiträge: n/a
Standard PHP Join: Benötige Hilfe

Hallo !!
ich habe in einer Tabelle:

msgid | chatid | msgto | msgfrom | msg

jetzt brauche ich einen join der mir msg, msgfrom ausließt und nur da wo
Filter:
msgto = 'xx'
die höchste msgid bei jeder chatid

also : die Msgid (=Zeilen) - 3,4,10,12 besitzen den Chatid Wert "5"

nun soll die Query 12 (am besten msgid => 12, msgfrom => {usr-id}, msg => {nachricht} ) pro Zeile ausgeben.

Die nächste Zeile soll wiederum weitere Msgs enthalten.
-- Einzeilig würde es mir aber auch weiterhelfen1

nochmal in einem satz: für jede Chatid - die höchste msgid (wenn bei msgto der usr eingegeben ist)

gibt es da eine möglichkeit?

Grüße sim
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.09.2005, 13:41  
Gast
 
Beiträge: n/a
Standard

Mittels Subselect (ab Mysql-version 4.1 verfügbar)
sollte folgendes funktionieren:
Code:
SELECT t1.msgid, t1.chatid, t1.msgto, t1.msgfrom, t1.msg
FROM tabelle AS t1
WHERE
   t1.msgid IN(SELECT MAX(t2.msgid) FROM tabelle AS t2 WHERE t2.msgto 'xxx' GROUP BY t2.chatid)
~dilemma~
  Mit Zitat antworten
Alt 03.09.2005, 14:13  
Gast
 
Beiträge: n/a
Standard

Mit nem LEFT JOIN evtl. auch so:
Code:
SELECT
   t1.msgid, t1.chatid, t1.msgto, t1.msgfrom, t1.msg
FROM
   tabelle AS t1
LEFT JOIN tabelle AS t2
     ON (t2.msgto = t1.msgto
         AND
         t2.chatid = t1.chatid
         AND
         t2.msgid > t1.msgid)
WHERE
   t2.msgid IS NULL
   AND
   t1.msgto 'xxx'
~dilemma~

KORRETUR:
da fehlte ein = Zeichen:
Code:
...
WHERE
   t2.msgid IS NULL
   AND
   t1.msgto = 'xxx'
/*---------^^^---------------*/
~dilemma~
  Mit Zitat antworten
Alt 03.09.2005, 21:18  
Gast
 
Beiträge: n/a
Standard

Vielen Dank!

Eine Sache müsste noch eingebaut werden und zwar:
darf das nur funktionieren, wenn der angebene User auch die neuste Msg der Session/Chatid hat - (und kein anderer)
  Mit Zitat antworten
Alt 04.09.2005, 11:36  
Gast
 
Beiträge: n/a
Standard

Bezüglich folgendem:
Zitat:
Eine Sache müsste noch eingebaut werden und zwar:
darf das nur funktionieren,
wenn der angebene User auch die neuste Msg der Session/Chatid hat - (und kein anderer)
Sorry, leider verstehe ich deine Nachfrage nicht.
Wenn ich dich bisher richtig verstanden habe,
gibt es in deiner Tabelle 2 verschiedene USER:
a) in der Spalte `msgfrom``
b) in der Spalte `msgto`
Ich weiß daher nicht,
- welchen User du mit >>>"der angebene User"<<< meinst.
Und ich kann auch nur vermuten, daß
- die >>>"neuste Msg"<<< die größte `Msgid` haben soll (bezogen auf >>>"Session/Chatid"<<<).
Ich weiß aber auch nicht, was du
- mit >>>"Session/Chatid"<<< meinst.

Bitte versuche deine Frage verständlicher zu formulieren!

Es wäre auch nützlich zu wissen,
ob deine MYSQL-Version SUBSELECTs zulässt. (Ab Version 4.1).

Gruß ~dilemma~
  Mit Zitat antworten
Alt 04.09.2005, 16:08  
Gast
 
Beiträge: n/a
Standard

SQL Version lässt alles zu (kann up- bzw. down daten wie mans brauch ^^

Vielen Dank für deine Mühen ! --
hab das problem nun mit einer "active-flag" spalte gelöst ...

--

DELETE FROM `module_msg` WHERE chatid = 4 ORDER BY msgid ASC LIMIT 5,30;

---
aber mir fehlt noch etwas: und zwar möchte ich das ein DELETE ausgeführt wird, mit LIMIT 5,30 (also ab 5 bis 30 ... -- oder bis unendlich - spielt hier keine große Rolle)
--
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrfach Join lazydog Datenbanken 2 08.05.2008 16:09
JOIN Problem pPanther Datenbanken 7 06.03.2008 17:26
[gelöst]LEFT JOIN, DINSTINCT und trotzdem doppelte?!?! stefanjann Datenbanken 10 06.02.2008 11:49
performance problem mit join leo Datenbanken 4 14.01.2008 22:31
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
Komplexes Join Problem pPanther Datenbanken 7 03.08.2007 23:16
Datenbank schon wieder ... hilfe zu INNER JOIN &lt;Daniel&gt; Datenbanken 3 14.09.2006 15:48
SQL-Abfrage evt. mit JOIN mariohaehni Datenbanken 4 07.09.2006 14:26
Join auf 2 verschiedene Felder Tommek Datenbanken 6 25.07.2006 20:39
join skaterboy Datenbanken 1 08.06.2006 09:36
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
INNER JOIN + Suchkriterien + Abfrage duerov PHP Tipps 2006 4 04.04.2006 12:47
inner join aus db PHP Tipps 2006 8 22.01.2006 01:23
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
[Erledigt] Abfrageproblem mit Inner Join Datenbanken 15 29.11.2005 18:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php join, php join 1:n, php join(), msgto, mysql join größter satz einer tabelle

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:42 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.