» Poradna » Web a internet

MySQL: Vypísanie chatovacích miestností s ID poslednej správy

 | Microsoft Windows XP Chrome 28.0.1500.72

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.idMalo 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|NULLTabuľka chatv2_rooms|------|Stĺpec|Typ|Nulový|Predvolené|------|//**id**//|int(11)|Nie||name|varchar(255)|Nie||avatar|varchar(255)|Áno|NULLTabuľ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 = 10Vďaka za každú radu :)

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Microsoft Windows Vista Opera 9.80

Ten SELECT co je uvnitř ti vrací řádek s poslední zprávou bez ohledu na místnost (podle výpisu by to měl být řádek s ID=799 a room_ID=1). Pokud ho připojíš přes LEFT JOIN, vezmou se všechny řádky z tabulky chatv2_rooms a pouze u řádku, kde je stejné id místnosti (tj. v tvém případě místnost s ID=1), se doplní ID poslední zprávy.Měla by zafungovat následující úprava:SELECT room.*,(SELECT MAX(msg.id)FROM chatv2_messages AS msgWHERE msg.room_id = room.id) AS last_idFROM chatv2_rooms AS room

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows XP Chrome 28.0.1500.71

Ja som vymyslel nejaky takyto dotaz, ktory zatial funguje: 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_idJe v nom nieco chybne?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows Vista Opera 9.80

Co se týče výstupu, tak je to OK. Možná ale tenhle select není tak efektivní, což by se mohlo projevit při větším počtu záznamů.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: NULL, Room, Avatar