vbndesign 0 Denunciar post Postado Março 7, 2014 Boa noite pessoal. Estou com um problema que não faço ideia de como solucionar.Tenho uma tabela que trás o histórico de palestras com os seguintes campos.- id- id_usuario - id_status_palestra- data_palestra - data_cadastro Sempre que um usuário é cadastrado em uma palestra ele fica com o status de palestra pré-agendada. Porém a data desta palestra pode ser alterada e com isso cria-se um novo registro com a nova data fazendo o histórico. A questão é que eu preciso pegar o último registro de cada usuário e caso ele esteja com o status de palestra pré-agendada (neste exemplo) contar quantos usuários se encontram nesta condição e agrupa-los pela data da palestra. Desta forma eu saberia quais datas eu tenho usuários com a palestra pré-agendada e quantos são. Tentei ler vários posts parecidos mas sem sucesso devido a minha limitação com algumas funções e agrupamento de resultados com SQL. Se alguém puder me ajudar agradeço muito. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 7, 2014 http://forum.imasters.com.br/topic/512214-selecionando-item-max/#entry2030107 Compartilhar este post Link para o post Compartilhar em outros sites
vbndesign 0 Denunciar post Postado Março 7, 2014 Fala ai Motta. Até entendi o sql que postou no post que citou mas o meu caso é um pouco diferente e envolve mais coisas. No caso eu alterei os nomes dos atributos para ficar menor no post acima mas a tabela é essa aqui em baixo com alguns registros. Dai como pode perceber eu posso ter mais de um registro para cada usuário. Como expliquei acima esta tabela grava qualquer alteração das datas da palestra e status das mesmas sempre em novos registros fazendo com que eu tenha um histórico de ações. O que eu preciso é sempre pegar o último registro de cada usuário de acordo com o seu status e agrupá-los pela data da palestra para saber a quantidade total. Exemplo: No meu sistema eu preciso retornar quantos usuários estão com o status da palestra igual a 1 e mostrar a quantidade total através da data. Neste caso a minha consulta deveria retornar os codigo_usuarioxpalestra: 2, 5 e 6. Em seguida agrupá-los pela data o que resultaria em 2 usuários na data 2014-03-10 e 1 usuário na data 2014-03-17. Eu até consegui fazer alguma coisa na consulta abaixo, porém eu não consegui fazer com que o codigo_usuarioxpalestra 3 ficasse de fora já que o último registro deste usuário está com o cod_status_palestra igual a 2 e também não consegui agrupá-los pela data fazendo uma contagem do total. SELECT uxa1.codigo_usuarioxpalestra, uxa1.cod_usuario, uxa1.cod_status_palestra, (SELECT data_palestra FROM t_usuarioxpalestra AS uxa2 WHERE uxa2.cod_usuario = uxa1.cod_usuario ORDER BY uxa2.codigo_usuarioxpalestra DESC LIMIT 1) AS data FROM t_usuarioxpalestra AS uxa1 GROUP BY uxa1.cod_usuario ORDER BY uxa1.cod_usuario Abs. Compartilhar este post Link para o post Compartilhar em outros sites
andrepinheiroti 0 Denunciar post Postado Outubro 29, 2018 Alguém saberia me dizer como faço para retornar todos os registros menos o último? Agradeço desde já a todos! Compartilhar este post Link para o post Compartilhar em outros sites
marcosmarcolin 0 Denunciar post Postado Novembro 1, 2018 Tenta assim pegando o maior ID. SELECT * FROM clientes WHERE clientes.id <> (SELECT MAX(c.id) FROM clientes c) Compartilhar este post Link para o post Compartilhar em outros sites
andrepinheiroti 0 Denunciar post Postado Novembro 2, 2018 marcosmarcolin tentei aqui e não foi, vou passar como está construido aqui. $SQL_noticias = mysql_query("SELECT * FROM noticias INNER JOIN categoria ON(noticias.categoria = categoria.id_categoria) WHERE url_categoria = '$arquivo' AND ORDER BY id_noticia DESC"); while($lh2 = mysql_fetch_array($SQL_noticias)){ $idNoticia = $lh2['id_noticia']; $tituloNoticia = $lh2['titulo']; $legendaNoticia = $lh2['legenda']; $imagemNoticia = $lh2['imagem']; $urlNoticia = $lh2['url']; Compartilhar este post Link para o post Compartilhar em outros sites
marcosmarcolin 0 Denunciar post Postado Novembro 2, 2018 Pensei em uma forma de fazer, não é a melhor prática. $max_id = mysqli_query($con, "SELECT MAX(ID) FROM noticias"); // Recebe o maior ID da tabela, ex: 98 $max_id = $max_id -1; // tira o último ID ficando 97 // depois executa a consulta $res = mysqli_query($con, "SELECT * FROM noticias LIMIT '$max_id' ORDER BY ASC"); // inicia do 0 e vai até 97 Só ajustar pro teu JOIN. Compartilhar este post Link para o post Compartilhar em outros sites
wenderrodrigo 0 Denunciar post Postado Novembro 13, 2018 Em 29/10/2018 at 09:48, andrepinheiroti disse: Alguém saberia me dizer como faço para retornar todos os registros menos o último? Agradeço desde já a todos! SELECT a.id FROM bd.tabela AS a WHERE a.id NOT IN (SELECT MAX(id) AS id FROM bd.tabela) Compartilhar este post Link para o post Compartilhar em outros sites