Autor Zpráva
blazej44800
Profil
Zdravím,
riešim problém s MySQL príkazom. Robil som už aj zložitejšie ale s týmto nejako nemôžem pohnúť:

    SELECT room.*, msg.id AS last_id
    FROM chatv2_rooms AS room
    LEFT JOIN (
      SELECT * 
      FROM chatv2_messages
      ORDER BY id DESC
      LIMIT 1
    ) AS msg ON msg.room_id = room.id

Malo by to vypísať všetky "četovacie" miestnosti s ID poslednej správy. Aktuálne tento príkaz vypíše všetky miestnosti ale ku poslednej nevypíše posledné ID správy.

Výsledok SQL príkazu:
|1|Default h|NULL|799
|10|Next ROOM|NULL|NULL

Tabuľka chatv2_rooms
|------
|Stĺpec|Typ|Nulový|Predvolené
|------
|//**id**//|int(11)|Nie|
|name|varchar(255)|Nie|
|avatar|varchar(255)|Áno|NULL

Tabuľka chatv2_messages
|------
|Stĺpec|Typ|Nulový|Predvolené
|------
|//**id**//|int(11)|Nie|
|from_id|int(11)|Nie|
|room_id|int(11)|Nie|
|time|datetime|Nie|
|text|longtext|Nie|
|attachment_id|int(11)|Áno|NULL
|session_id|int(11)|Nie|

Neviete kde by mohol byť problém?
P.S. Áno, v tabuľke chatv2_messages mám správu s room_id = 10

Vďaka za každú radu :)
blazej44800
Profil
Vyriešené:

    SELECT room.*, max(msg.id) AS last_id
    FROM `chatv2_rooms` AS room
    LEFT JOIN `chatv2_messages` AS msg ON msg.room_id = room.id
    GROUP BY msg.room_id

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: