Jump to content


Photo

Selecionar Dados Da Tabela


  • Faça o login para participar
6 replies to this topic

#1 Gilthans

Gilthans

    Turista

  • Usuários
  • 34 posts
  • Sexo:Não informado
  • Localidade:Curitiba PR

Posted 10/04/2005, 02:33

Eh mais questao de SQL de que PHP, mas nao tem forum para isso aqui, entao...


Eu tenho uma tabela users, e uma outra tabela posts.
A tabela posts eh de posts de forum, e a de users eh de usuarios.
Eu queria fazer um SQL para pegar a quantidade de pessoas que postaram mais que 5 posts na ultima semana.
Na tabela posts tem linha "post_time" e "poster_id" que eh equivalente a "user_id" de users. Que que eu faco?

eu fiz o seguinte:
$time = (time()-60*60*24*7); //Uma semana atras
$sql = "SELECT DISTINCT u.user_id FROM users u, posts p WHERE p.poster_id=u.user_id AND p.post_time > $time";
if(!$rs = mysql_query($sql, $db))
    die("Failed.");
$c = mysql_num_rows($rs);
echo "Nesta semana postaram $c usuarios.<br />";
O unico problema eh que isso soh eh o numero de pessoal que postou um ou mais posts, mas eu queria somente aqueles que postaram mais que cinco...

Como que eu faco?


Obrigado pela ajuda

Gilthans, sem portugues no computador
...and may the grand !MooXooM! above enlighten your path.

<?php
function sex($cromo1, $cromo2){ //É talvez a função mais triste que eu já fiz.
...
}
?>

#2 jinyam

jinyam

    Normal

  • Usuários
  • 69 posts
  • Sexo:Não informado

Posted 10/04/2005, 07:50

Eh mais questao de SQL de que PHP, mas nao tem forum para isso aqui, entao...


Eu tenho uma tabela users, e uma outra tabela posts.
A tabela posts eh de posts de forum, e a de users eh de usuarios.
Eu queria fazer um SQL para pegar a quantidade de pessoas que postaram mais que 5 posts na ultima semana.
Na tabela posts tem linha "post_time" e "poster_id" que eh equivalente a "user_id" de users. Que que eu faco?

eu fiz o seguinte:

$time = (time()-60*60*24*7); //Uma semana atras
$sql = "SELECT DISTINCT u.user_id FROM users u, posts p WHERE p.poster_id=u.user_id AND p.post_time > $time";
if(!$rs = mysql_query($sql, $db))
    die("Failed.");
$c = mysql_num_rows($rs);
echo "Nesta semana postaram $c usuarios.<br />";
O unico problema eh que isso soh eh o numero de pessoal que postou um ou mais posts, mas eu queria somente aqueles que postaram mais que cinco...

Como que eu faco?


Obrigado pela ajuda

Gilthans, sem portugues no computador

Bom pra ver todos que postaram eu nao sei
Mas ver a quantidade de post's que um especifico cara feiz eu sei
Voce so seleciona os registros com id do user e faiz mesma coisa que o que vc feiz

#3 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 10/04/2005, 09:57

Veja assim amigo:

<?
$time = (time()-60*60*24*7);
$sql = "SELECT u.user_id, COUNT (p.poster_id) quant
        FROM users u, posts p
        WHERE p.poster_id = u.user_id AND p.post_time > $time
        GROUP BY p.poster_id
        ORDER BY quant DESC";

if (!$rs = mysql_query($sql, $db))
  die("Failed.");

$c = mysql_num_rows($rs);
echo "Nesta semana postaram {$c} usuarios.<br />";

while ($x = mysql_fetch_array ($sql))
{
  echo "ID: {$x[0]}<br />
        Posts: {$x[1]}<hr>";
}
?>



[]'s
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#4 Gilthans

Gilthans

    Turista

  • Usuários
  • 34 posts
  • Sexo:Não informado
  • Localidade:Curitiba PR

Posted 10/04/2005, 13:59

Justice, voce fez exatamente o que eu tinha feito, com codigo diferente...
O que eu quero fazer eh selecionar com MAIS QUE 5 posts. O que o seu codigo faz eh pegar todos que tem mais que 1 post.
...and may the grand !MooXooM! above enlighten your path.

<?php
function sex($cromo1, $cromo2){ //É talvez a função mais triste que eu já fiz.
...
}
?>

#5 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 10/04/2005, 14:26

Vê assim:

<?
$time = (time()-60*60*24*7);
$sql = "SELECT u.user_id, COUNT (p.poster_id) quant
        FROM users u, posts p
        WHERE p.poster_id = u.user_id AND p.post_time > $time
        GROUP BY p.poster_id
        HAVING quant > 5
        ORDER BY quant DESC";

if (!$rs = mysql_query($sql, $db))
  die("Failed.");

$c = mysql_num_rows($rs);
echo "Nesta semana postaram {$c} usuarios.<br />";

while ($x = mysql_fetch_array ($sql))
{
  echo "ID: {$x[0]}<br />
        Posts: {$x[1]}<hr>";
}
?>


Amostra como aparece os resultados ae...
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#6 Gilthans

Gilthans

    Turista

  • Usuários
  • 34 posts
  • Sexo:Não informado
  • Localidade:Curitiba PR

Posted 10/04/2005, 14:31

Eu consegui dar o jeito.

O codigo eh o seguinte:

$time = (time()-60*60*24*7);

$sql = "SELECT u.username FROM users u, posts p WHERE p.poster_id=u.user_id AND p.post_time > $time GROUP BY p.poster_id HAVING count(p.post_id) > 5";
if(!$rs = mysql_query($sql, $db))
    die("Failed.");
$c = mysql_num_rows($rs);
echo "Mais que 5 na ultima semana: $c users.<br />";
Dava pra fazer count(u.username) tambem, mas no caso eu queria ter a lista de quem eram esses usuarios com mais do que 5.

Obrigado pela ajuda
...and may the grand !MooXooM! above enlighten your path.

<?php
function sex($cromo1, $cromo2){ //É talvez a função mais triste que eu já fiz.
...
}
?>

#7 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 10/04/2005, 14:33

HEHE..

Ficou igual o meu, mas com uma diferença: ele exibe a quantidade de post.


[]'s
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq