Sou iniciante na área de desenvolvimento e estou fazendo um sistema para o comércio do meu pai para aprimorar meus conhecimentos em PHP e em lógica de programação no geral.
O sistema já está quase pronto, só falta uns relatórios que estou gerando e estou com dificuldade em um:
Quero gerar uma listagem com os últimos lançamentos agrupados pela data, tipo assim:
No MySQL fiz o seguinte select:
SELECT
DATE_FORMAT(p.pontuacao_data, '%d/%m/%Y') AS dia,
DATE_FORMAT(p.pontuacao_data, '%H:%i') AS horario,
u.usuario_nome AS nome,
p.usuario_telefone AS telefone,
p.pontuacao_valor AS pontuacao_inserida
FROM
pontuacao p,
usuario u
WHERE
u.usuario_telefone = p.usuario_telefone AND p.pontuacao_valor <> 0
ORDER BY
pontuacao_data DESC
Ele me retorna todas as informações que preciso, porém não faço ideia (e não soube explicar o google para fazer uma pesquisa que trouxesse o que preciso) como fazer para aparecer a data só no primeiro registro com tal data.
Eu precisaria agrupar tudo em um único array, quando a ds_longa for igual.
Segue o script:
$Select = new Select;
$Select->FullSelect('SELECT * FROM produto LEFT OUTER JOIN produto_categoria ON produto.cd_produto = produto_categoria.cd_produto LEFT OUTER JOIN categoria ON produto_categoria.cd_categoria = categoria.cd_categoria LEFT OUTER JOIN cor ON cor.cd_cor = produto.cd_cor LEFT OUTER JOIN tamanho ON tamanho.cd_tamanho = produto.cd_tamanho');
if ($Select->getResult()):
$Products = $Select->getResult();
foreach ($Products as $Product):
print_r($Product);
endforeach;
endif;
O que podem me ajudar?
Desde já, muito obrigado!
select distinct(CampoConhecimento ) as CampoConhecimento, cc.NivelConhecimento,
COUNT(DISTINCT(cc.id)) as Qtde
from tabelaConhecimento cc
inner join tabelaCadastro cv on cv.Id = cc.id
group by cc.CampoConhecimento,cc. NivelConhecimento
order by cc.CampoConhecimento asc
CampoConhecimento NivelConhecimento Qtde
Access 1 29799
Access 2 7951
Access 3 2014
Estou com um problema relacionado a ordenação e customização do mesmo.
Tenho uma tabela de menus que constam as colunas id, id_parent, titulo, ordem
onde possuem a seguinte construção:
CREATE TABLE `menus_subsites_itens` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_parent` int(11) DEFAULT NULL,
`titulo` varchar(45) NOT NULL,
`ordem` float NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
o id_parent quando aplicado será do id do pai, a ordem recebe no momento da criação o mesmo valor do id para seguir o padrão de ordenação.
O ordem quando modificado pode receber um float dependendo da posição que será colocado tipo entre 1 e 2 executo uma formula (1/2)+1, se quero colocar o item depois do 2 executo a formula (1/2) + 2 antes do 1 executo a formula (1/2)
Encontrei o seguinte código sobre agrupamentos na consulta:
select * from menus_subsites_itens order by COALESCE(id_parent, id),id_parent is not null, ordem;
Ele funciona bem, se a ordem possui sincronismo, porém se desejo criar um novo subitem tipo id 30 com ordem 30 e quiser colocá-lo como subitem de um item do topo, a construção coalesce, não funciona adequadamente, pois coloca na parte inferior fora do subitens .
Existe uma forma melhor para que consiga fazer os agrupamentos e ordenações corretamente, podendo muda-las sem tantos transtornos?