Mysql sorgu sorunu

2 Cevap php

(Benim için karmaşık için) MySQL sorgu ile ilgili bir sorun var.

Tamam, burada yapmam gereken budur:

Öncelikle bazı özel kullanıcı Alınan mesajlarınızı kontrol etmek gerekiyor

$mid=$_SESSION['user'];
$stat1=mysql_query("SELECT id, fromid, toid, subject FROM messages WHERE 
toid = '".$mid."'  AND subject != 'not readed' GROUP BY fromid ")
or die(mysql_error());
while ($h = mysql_fetch_array($stat1))
{
$whosend=$h['fromid'];

Yapmam gereken ikinci şey benim özel kullanıcı ("romatizmal") için mesajlar ("fromid") gönderilen (silinmiş veya değil) kullanıcılarının durumunu kontrol etmektir. Bu başka bir tablodan yapmanız gerekir:

$stat2=mysql_query("SELECT id, status FROM members WHERE id='".$whosend."' AND 
status ='1'")or die(mysql_error());
while ($s = mysql_fetch_array($stat))
{

Sonra benim sorunlar göstermeye başlar.

Nasıl status = 1 ile benim özel kullanıcıya mesaj gönderilen kullanıcıların sayısı alabilirim? Mesajların sayısını ancak onları gönderdi kullanıcıların toplam sayısı değildir.

Bu sorguyu yapmak için daha kolay bir yolu var mı? Ben gibi katılmak tabloları ile denenmiş

$stat=mysql_query("SELECT memebers.id, memebers.status, messages.toid, 
messages.fromid,messages.subject,messages.id FROM members, messages
WHERE messages.toid='".$mid."' AND members.status ='7' ....

Ama bu bile sorguda ben bu tabloları katılmak için önce başka bir sorgu olacak bu yüzden bu sorgudan önce mesaj gönderdiğiniz kullanıcının id olması gerekir.

2 Cevap

Yani bu diğer üye ($ orta) bir mesaj gönderilen durum = 1 ile üye sayısının arıyorsun?

Bu böyle bir şey?

$sql = "select count(distinct messages.fromid) From messages Inner Join members on members.id = messages.fromid Where messages.toid = '" . $mid . "' AND members.`status` = 1";
SELECT id, fromid, toid, subject FROM messages WHERE toid = '".$mid."'  AND subject != 'not readed' GROUP BY fromid 

Eğer formID ve seçme fıkra hiçbir toplanmasının GROUP BY gibi doğru olamaz.