Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Galera,
Estou tentando selecionar os registro da tabela classificados_anuncio, porém só me interessa os que ainda não foram pagos ou não totalmente pagos.
Atenção: Os não totalmente pagos são aqueles registro que ainda não contem nem data_ativo e nem data_validade ou são 0000-00-00
Então digitei o seguinte código:
SELECT * FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.cpf='CPF' AND classificados_anuncio.codigo!=pagamento_anuncio.codigo_anuncio OR classificados_anuncio.codigo=pagamento_anuncio.codigo_anuncio AND pagamento_anuncio.data_ativo='' OR pagamento_anuncio.data_ativo='0000-00-00' AND pagamento_anuncio.data_validade='' OR pagamento_anuncio.data_validade='0000-00-00' ORDER BY classificados_anuncio.codigo ASC
Desse modo não tive êxito. Então tentei de uma outra forma:
SELECT FROM classificados_anuncio WHERE cpf='CPF' AND (SELECT FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.codigo!=pagamento_anuncio.codigo_anuncio) OR (SELECT FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.codigo=pagamento_anuncio.codigo_anuncio AND pagamento_anuncio.data_ativo='' AND pagamento_anuncio.data_validade='') OR (SELECT FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.codigo=pagamento_anuncio.codigo_anuncio AND pagamento_anuncio.data_ativo='0000-00-00' AND pagamento_anuncio.data_validade='0000-00-00') ORDER BY codigo ASC
Também não deu muito certo, daí tentei uma terceira forma:
SELECT FROM classificados_anuncio JOIN pagamento_anuncio ON classificados_anuncio.cpf='CPF' WHERE (SELECT FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.codigo!=pagamento_anuncio.codigo_anuncio) OR (SELECT FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.codigo=pagamento_anuncio.codigo_anuncio AND pagamento_anuncio.data_ativo='' AND pagamento_anuncio.data_validade='') OR (SELECT FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.codigo=pagamento_anuncio.codigo_anuncio AND pagamento_anuncio.data_ativo='0000-00-00' AND pagamento_anuncio.data_validade='0000-00-00') ORDER BY classificados_anuncio .codigo ASC
Então na terceira eu desisti, e venho pedir, humildemente, a ajuda de vocês!
D'Emery, vamos por partes:
1º você quer pegar os registros da tabela classificados_anuncio que não tem pagamento, ou seja, não estão na tabela pagamento_anuncio
SELECT
*
FROM
classificados_anuncio
LEFT JOIN pagamento_anuncio ON (classificados_anuncio.codigo != pagamento_anuncio.codigo_anuncio)
WHERE
classificados_anuncio.cpf='CPF'
Neste eu utilizo o LEFT JOIN para trazer os dados da Tabela a esquerda classificados_anuncio e que o campo codigo seja diferente do codigo_anuncio.
2º Trazer todos os anuncios que ainda não foram efetivados os pagamentos:
SELECT
*
FROM
classificados_anuncio
INNER JOIN pagamento_anuncio ON (classificados_anuncio.codigo = pagamento_anuncio.codigo_anuncio)
WHERE
classificados_anuncio.cpf='CPF' AND
pagamento_anuncio.data_ativo='0000-00-00' AND
pagamento_anuncio.data_validade='0000-00-00'
Neste caso utilizo o INNER JOIN para só buscar os classificados que tem registro na tabela pagamento_anuncio e os campos de data tenham o valor '0000-00-00'.
Veja se isso lhe ajuda e qualquer coisa é só postar.
Achei o suposto erro! Só não sei como coloca-lo em MySQL
Eu quero os registro da tabela classificados_anuncio, que não estejam (com o mesmo código) na tabela pagamento_anuncio.
Vamos lá:
SELECT * FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.cpf='CPF' AND classificados_anuncio.codigo!=pagamento_anuncio.codigo_anuncio
Só que ao colocar desse jeito, ele me mostra os registro que não contem o mesmo código da tabela pagamento_anuncio. E não é isso que eu quero, eu quero que ele só me mostre os registros que não contem pagamento.
Só deixando claro quais campos são de cada tabela:
classificados_anuncio
pagamento_anuncio
Além de mostrar os registros que não foram pagos, necessito que mostre-me os registro que foram iniciado o pagamento, mas não concluídos.
Exemplo, o cara iniciou o pagamento, mas vai pagar por boleto bancário e ainda não o pagou.
Para isso fiz o seguinte:
SELECT * FROM classificados_anuncio JOIN pagamento_anuncio WHERE classificados_anuncio.cpf='CPF' AND classificados_anuncio.codigo=pagamento_anuncio.codigo_anuncio AND pagamento_anuncio.data_ativo='0000-00-00' AND pagamento_anuncio.data_validade='0000-00-00'
Para indicar que já iniciou o processo de pagamento e não foi efetivado o sistema deixa as datas em 0000-00-00.
O que eu necessito é exatamente ter os dois tipo de respostas, quando ele não tem nenhum registro de pagamento e quando ele iniciou a seção de pagamento mais não concluiu.
Alguém poderia me explicar como funciona?
Ninguém que possa me ajudar?