Jump to content

Mysql vaicājums kā attēlot iesūtni līdzīgi kā draugiem.lv


spy
 Share

Recommended Posts

Labdien!

 

Tātad man vajadzētu lai iesūtnē tiek parādīta tikai viena vēstule no katra cilvēka ar kuru ir bijusi sarakste. Plus vajag lai pieprasījumā  vēstules kas nav lasītas tiek attelotas virs nelasītajām, bet sašķirotas pēc datuma(jaunākās nelasītās ir augstāk kā vecākās nelasītās). Un protams vajag lai tiek parādīts tā lietotāja vārds no kura ir vēstule. Ir vajadzīgs tikai vēstuļu saraksts, ne pašas vēstules.

 

Ir divas tabulas. Vēstuļu tabula kura izskatās aptuveni šādi:

 

| id | laiks | no id | kam id | saturs | status | saņēmējs dzēsis | sūtītājs dzēsis |

 

un lietotāju tabula kura izskatās aptuveni šādi:

 

| lietotaja id | lietotāja vārds | parole |

 

Esmu izmēģinājis dažādus pieprasījumus ar ORDER BY , bet nekas kas mani apmierinātu nav sanācis. Neesmu arī nekāds lielais Mysql pārzinātājs Būtu ļoti pateicīgs ja kāds varētu ieteikt kāds pieprasījums šeit ir jāizmanto.

Labots - spy
Link to comment
Share on other sites

Tev jau jāšķiro vismaz pēc pāris kolonnām.

Tad vēl vajadzētu GROUP BY lietotaja id, un tad kārtot pēc statusa, un tikai tad pēc datuma, kam vēl jāuzliek max parametrs.


Sen neko neesmu rakstījis, bet varētu būt kaut kā tā

select * from "tava e-pastu tabula" group by noid order by status (asc/desc nezinu kādas tev tur vērtības), laiks desc

Labots - ju
Link to comment
Share on other sites

vispār ir nepieciešami kādi statusi, ja pietiek reāli ar "read" lauku, vai ir izlasīts - true/false?

 

dabūt vispār visas vēstules, vispirms nelasītās 

 

-- nelasītās vispirms
select * from messages where no_id = $ME or kam_id = $ME and status <> 'read' 
order by laiks DESC
UNION
-- lasītās pielasam 
select * from messages where no_id = $ME or kam_id = $ME and status = 'read' 
order by laiks DESC
Link to comment
Share on other sites

Man sanāca šitāds mežonis, par ātrdarbību neatbildu.

 

SELECT vestules.id, vestules.laiks, vestules.status, lietotaji.vards 
FROM vestules, lietotaji, 
(SELECT MAX(laiks) AS laiks, userid FROM
    (SELECT MAX(laiks) AS laiks, noid AS userid FROM vestules WHERE kamid = @MansID GROUP BY noid 
      UNION 
      SELECT MAX(laiks) AS laiks, kamid AS userid FROM vestules  WHERE noid = @MansID GROUP BY kamid 
    ) visilietotaji
    GROUP BY userid
) topvestules
WHERE vestules.laiks = topvestules.laiks AND topvestules.userid = lietotaji.id 
ORDER BY vestules.status, vestules.laiks DESC

 

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...