eilini karta aciu uz operatyvuma :-)

Gal galit daug maz nusakyti query norint atlikti toki veiksma:

Yra dvi lenteles.
1. Komentarai
2. Useriai

Reiktu paselectinti komentarus, bet ir pagal salia komentaro esanti USER_ID i ta pati komentaru array issitraukti ir nick name ir jei reiks daugiau info apie useri. Hm, tikiuosi kas nors supras :-)

Tikrai taip, galutinio rezultato neitakojo :-)

Tiesa... :-)
Uztenko ir

GROUP BY A.ID

Je! Aciu! Kreiva uzklausa gan greita pasidare :-)
Rodomi įrašai 0 - 29 (30 iš viso , Užklausa užtruko 0.0011 sek.)

mysql> EXPLAIN images;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| size      | int(11)     | NO   |     | 0       |                |
| downloads | int(11)     | NO   |     | 0       |                |
| lastuse   | int(11)     | NO   |     | 0       |                |
| type      | varchar(10) | NO   |     | 0       |                |
| comments  | text        | NO   |     | NULL    |                |
| ip        | text        | NO   |     | NULL    |                |
| report    | tinyint(4)  | NO   |     | 0       |                |
| adult     | tinyint(1)  | NO   |     | 0       |                |
+-----------+-------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
mysql> EXPLAIN komentarai;
+------------+------------+------+-----+---------+----------------+
| Field      | Type       | Null | Key | Default | Extra          |
+------------+------------+------+-----+---------+----------------+
| id         | int(11)    | NO   | PRI | NULL    | auto_increment |
| kas        | text       | NO   |     | NULL    |                |
| date       | text       | NO   |     | NULL    |                |
| time       | text       | NO   |     | NULL    |                |
| komentaras | longtext   | NO   |     | NULL    |                |
| email      | text       | NO   |     | NULL    |                |
| web        | text       | NO   |     | NULL    |                |
| kam        | int(11)    | NO   |     | 0       |                |
| adm        | tinyint(1) | YES  |     | NULL    |                |
+------------+------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

uf, tikiuosi suprantama :-)

IMAGES.ID = KOMENTARAI.KAM

Taigi... turiu uzklausa:

SELECT A.ID, KOMENTARAI.KAM, COUNT( * ) 
FROM (
SELECT ID
FROM IMAGES
GROUP BY ID
ORDER BY ID DESC 
LIMIT 30 , 30
) AS A
LEFT JOIN KOMENTARAI ON A.ID = KOMENTARAI.KAM
GROUP BY KOMENTARAI.KAM, A.ID
ORDER BY A.ID DESC

Ji, kiekvienam puslapyje istraukia po 30 (paryskinta) paveiksleliu ir salia kiek jis turi komentaru... istiesu sioji nelabai vykus, kadangi graziau isgauti nepavyko.

Esme yra tame, kad su uzklausa noru istraukti tiek paveikslelio ID, tiek ir komentarus, kad nereiktu naudoti keliu atskiru uzklausu.

Gal turite pasiulymu kaip optimizuoti?  Nes si gan ilgokai uztrunka "Rodomi įrašai 0 - 29 (30 iš viso , Užklausa užtruko 1.6280 sek.)"

Beje, sis variantas toks kreivas del to, jog man reikalingi ir tie ID, kurie nturi komentaru