Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Meus amigos, mas uma vez venho ao socorro de vocês. rs
To com uma query aqui executando um select que funciona direitinho, porém surgiu uma nova necessidade, preciso agrupar pelo maior id.
Não sei como fazer pra mesclar os dois:
//estrutura da tabela
CREATE TABLE IF NOT EXISTS `pv` (
`id_pv` int(11) NOT NULL auto_increment,
`referencia_pv` varchar(50) collate latin1_general_ci NOT NULL default '',
`numero_pv` varchar(100) collate latin1_general_ci NOT NULL default '',
`data_pv` date default '0000-00-00',
`ocm_pv` varchar(100) collate latin1_general_ci NOT NULL default '',
`indice_pv` varchar(10) collate latin1_general_ci NOT NULL default '',
`id_info_doc` int(11) NOT NULL default '0',
`estado_produto` char(1) collate latin1_general_ci NOT NULL default '',
`estado_processo` char(1) collate latin1_general_ci NOT NULL default '',
`responsabilidade` char(1) collate latin1_general_ci NOT NULL,
`fase_projeto` varchar(30) collate latin1_general_ci NOT NULL,
`id_peca` int(11) NOT NULL,
`evolucao_indice` int(11) NOT NULL default '0',
`data_negativa` date NOT NULL,
`cancelado` tinyint(1) default '0' ,
`projeto` varchar(45) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id_pv`)
) ;
o select que conta
select count(*) from pv where data_negativa='0000-00-00' AND CONCAT(estado_processo,estado_produto) = 'WE' AND projeto = 'NomeProjeto' AND cancelado=0
O problema é que tenho várias peças que podem ter um pv no mesmo dia e por esse motivo preciso pegar o maior id referente aquela peça consigo fazer isso
select max(id_pv) from pv where id_peca='x';
Como mesclar essas duas queries ?
>
select count(*)
from pv
where data_negativa='0000-00-00'
AND CONCAT(estado_processo,estado_produto) = 'WE'
AND projeto = 'NomeProjeto'
AND cancelado=0
AND ID_PV = (select max(pv2.id_pv)
from pv PV2
where PV2.id_peca=PV.ID_PV)Fala aí amigão obrigado pela tentativa, mas sempre retorna zero, o id_peca não precisa ser igual ao id_pv e tal,
vou explicar melhor,
preciso contar o que tem estado processo igual a W e estado produto E , mas somente o ultimo cadastrado, acho que vou ter que alterar a estrutura das tabelas, pois não tenho chaves e tal, preciso de alguma forma que uma peca tenha um pv e essa peça tenha um estado produto e um estado processo. mas pegar somente o ultimo pv, pensei em usar o código do pv pois sem que o maior é o mais recente
select count(*)
from pv
where data_negativa='0000-00-00'
AND CONCAT(estado_processo,estado_produto) = 'WE'
AND projeto = 'NomeProjeto'
AND cancelado=0 AND ID_PV = (select max(pv2.id_pv)
from pv PV2
where PV2.id_peca=PV.id_peca)>
select count(*)
from pv
where data_negativa='0000-00-00'
AND CONCAT(estado_processo,estado_produto) = 'WE'
AND projeto = 'NomeProjeto'
AND cancelado=0 AND ID_PV = (select max(pv2.id_pv)
from pv PV2
where PV2.id_peca=PV.id_peca)show! é isso! obrigado.
quando você coloca
where PV2.id_peca=PV.id_peca)
o pv2 é por ser o nome dado anteriormente ao resultado da query ?
Dúvida resolvida.
@oFFTopoic: Mais importante que ter as dúvidas sanadas é entender como funciona para que depois de um tempo numa ocasião semelhante possamos agir corretamente, sem ter que criar um novo tópico.
O PV2 é apenas uma garantia , como a tabela é referenciada 2 vezes na mesma query se ronomeia (alias) para maior clareza e certeza de compilação correta.
O PV2 é apenas uma garantia , como a tabela é referenciada 2 vezes na mesma query se ronomeia (alias) para maior clareza e certeza de compilação correta.
Cara acho que ainda estou tendo um problema, se dou um select count das peças retorna um valor por exemplo 500 , se faço da outra forma e somo os valores ele da um valor maior, ou seja, creio eu que ele esteja fazendo o seguinte contando também se na mesma semana houve rmais de um estado. Consigo fazer a relação entre semanas direto no mysql , ou só no php ?
Ps.: A dúvida ainda é no mesmo sentido, devo abrir um novo tópico ?
Publique os dois selects que dao diferente.
Publique os dois selects que dao diferente.
Um deles é esse mesmo que conseguimos acertar:
select count(*) from pv where data_negativa='0000-00-00' AND CONCAT(estado_processo,estado_produto) = 'WE' AND projeto = 'NomeProjeto' AND cancelado=0 AND ID_PV = (select max(pv2.id_pv) from pv PV2 where PV2.id_peca=PV.id_peca)
A tabela PV é ligada a peças
quando dou o select na tabela de peças
select count(*) from peca
retorna um valor x que deveria ser a soma do resultado da consulta na tabelas de pv's porém quando somo o resultado da consulta na tabela de pv's da diferente.
Mas são diferentes mesmo , para checar faça :
select * from peca
exporte para uma planilha e faça as somas ou referencia cruzadas na planilha para checar usando os filtros.
>
Mas são diferentes mesmo , para checar faça :
select * from peca
exporte para uma planilha e faça as somas ou referencia cruzadas na planilha para checar usando os filtros.
Fiz aqui e bateu , deu certinho
Pra selecionar os resultados que são vazios eu consigo usar o concat ?
Faça ...
WHERE <CAMPO> IS NULL
select count(*)
from pv
where data_negativa='0000-00-00'
AND CONCAT(estado_processo,estado_produto) = 'WE'
AND projeto = 'NomeProjeto'
AND cancelado=0
Entre outras soluções