Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Keven Jesus_164006

[Resolvido] Problema Logica

Recommended Posts

Pessoal estou com problema de logica aqui.

to desenvolvendo site de empregos e na hora que a empresa cadastra uma vaga

na tabela vagas

 

vem o indentificador que a vaga é daquela empresa

a coluna int_cnpj onde quando cadastra uma vaga eu preencho doque vem da session o cnpj da empresa assim quando eu listar as vagas cadastradas por ela eu so verifico com WHERE se for igual ao cnpj logado

 

ta ate ai tudo bem.

eu quero listar os candidatos interessados naquele vaga.

 

como faço? kkk

na coluna vaga eu abro alguma coisa pra saber numero de interessados em tal vaga crio nova coluna como faço

pra identificar o tanto de candidato de acordo com a vaga que a empresa cadastro, :S ta tenso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve criar uma tabela N - N onde irá relacionar a vaga com id do candidato. Ou seja, a tabela só terá:

 

id_candidato (FK)

id_vaga (FK)

 

Com isso você vai conseguir visualizar todos os candidatos que se cadastraram para uma determinada vaga. E com isso relacionar os registros.

 

Pessoal estou com problema de logica aqui.

to desenvolvendo site de empregos e na hora que a empresa cadastra uma vaga

na tabela vagas

 

vem o indentificador que a vaga é daquela empresa

a coluna int_cnpj onde quando cadastra uma vaga eu preencho doque vem da session o cnpj da empresa assim quando eu listar as vagas cadastradas por ela eu so verifico com WHERE se for igual ao cnpj logado

 

ta ate ai tudo bem.

eu quero listar os candidatos interessados naquele vaga.

 

como faço? kkk

na coluna vaga eu abro alguma coisa pra saber numero de interessados em tal vaga crio nova coluna como faço

pra identificar o tanto de candidato de acordo com a vaga que a empresa cadastro, :S ta tenso

Compartilhar este post


Link para o post
Compartilhar em outros sites

saquei vo tentar

 

cara ainda to com problemas :S

ate a parte da tabela tal id_candiditado e id vaga eu entendi agora num sai da minha cabeça como vai relacionar isso. sabe quando passa 1 mil coisas sua cabeça você analista teoricamente cada uma delas e ja sabe que nao vao funcionar kkkk

 

preciso dar o num rows e saber quantidade X de candidatos a determinada vaga skskaaks JESSSSSSSSUS ME AJUDA ta muito tenso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples. Eu vou usar uma estrutura com nomes diferentes, mas você transforme na sua realidade, OK?

Você vai executar essa query que passarei, e depois modificar os campos de acordo com a sua necessidade, porém não pode negligenciar as devidas e corretas alterações na hora de criar os devidos FOREIGN KEYS!

Vamos lá!

 

Primeiro, a IDEIA de como as tabelas vão funcionar e interagir:

 

TABELA: EMPRESAS

Aqui temos o CNPJ e NOME. Você vai usar o CNPJ como um FOREIGN KEY! Logo, ele vai ser um PRIMARY KEY da sua tabela (sim, coloque o ID da tabela como sendo o CNPJ, afinal, nao teras duas empresas com CNPJ iguais ;)

 

TABELA: VAGAS

A sua tabela de vagas vai conter o ID da vaga (PRIMARY KEY), o EMPRESAS_CNPJ (FOREIGN KEY apontado para o campo CNPJ da tabela EMPRESAS) e o título da vaga

 

TABELA: VAGAS_INTERESSADOS

E aqui vem a sua solução!

Temos USUARIOS_ID e VAGA_ID como PRIMARY KEY's (outra chave composta). Como nunca vai existir um usuário interessado duas vezes na mesma vaga, ou seja a combinação USUARIO_ID e VAGA_ID, vai existir uma única vez! Adotaremos também, o VAGAS_ID como um FOREIGN KEY apontando para o campo ID da tabela VAGAS!

 

TABELA: USUARIOS

Devemos considerar também que você possui uma tabela USUARIOS, com o campo ID!

 

Pronto. A nível de explicação está tudo nos esquemas, aproveite. Se você não tem muita experiência com banco de dados, já vou te adiantar a consulta SQL (por favor, não estou subestimando ok? Só a nível de ajuda MEEESMO ;)

 

Segue a consulta para gerar ESTA estrutura que apontei (modifique-a para seu uso):

 

SET FOREIGN_KEY_CHECKS=0;

CREATE TABLE `Empresas`
(
`CNPJ` VARCHAR(100) NOT NULL,
`NOME` VARCHAR(100) NOT NULL,
PRIMARY KEY (`CNPJ`)
) ENGINE InnoDB
;


CREATE TABLE `Usuarios`
(
`ID` INTEGER NOT NULL ,
`NOME` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE InnoDB
;


CREATE TABLE `Vagas`
(
`ID` INTEGER NOT NULL,
`EMPRESAS_CNPJ` VARCHAR(100) NOT NULL,
`TITULO` VARCHAR(100) NULL,
PRIMARY KEY (`ID`),
KEY (`EMPRESAS_CNPJ`)
) ENGINE InnoDB
;


CREATE TABLE `Vagas_Interessados`
(
`USUARIOS_ID` INTEGER NOT NULL,
`VAGAS_ID` INTEGER NOT NULL,
PRIMARY KEY (`USUARIOS_ID`, `VAGAS_ID`),
KEY (`USUARIOS_ID`)
) ENGINE InnoDB
;



SET FOREIGN_KEY_CHECKS=1;


ALTER TABLE `Vagas` ADD CONSTRAINT `FK_Vagas_Empresas` 
FOREIGN KEY (`EMPRESAS_CNPJ`) REFERENCES `Empresas` (`CNPJ`)
ON DELETE CASCADE ON UPDATE CASCADE
;

ALTER TABLE `Vagas_Interessados` ADD CONSTRAINT `FK_Vagas_Interessados_Usuarios` 
FOREIGN KEY (`USUARIOS_ID`) REFERENCES `Usuarios` (`ID`)
ON DELETE CASCADE
;

ALTER TABLE `Vagas_Interessados` ADD CONSTRAINT `FK_Vagas_Interessados_Vagas` 
FOREIGN KEY (`VAGAS_ID`) REFERENCES `Vagas` (`ID`)
ON DELETE CASCADE
;

 

Com essa estrutura, além de manter os dados de forma integra e consistente, você pode fazer o que deseja com esta consulta aqui:

 

SELECT Vagas_Interessados.USUARIOS_ID as id, Usuarios.NOME as nome FROM Usuarios RIGHT JOIN Vagas_Interessados ON (Vagas_Interessados.USUARIOS_ID=Usuarios.id) WHERE Vagas_Interessados.VAGAS_ID = 'ID_DA_VAGA'

 

Essa consulta irá retornar TODOS os usuários associados à essa vaga na tabela Usuarios,porém não somente o ID como lá está, mas sim o ID e o NOME!

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso da Db nao precisa nao estou quase acabando o projeto e só me enrolei nessa parte , mas join acho que agora ficou claro segunda no trabalho eu verifico e te digo :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha ai no caso eu fiz do seu jeito junto com sua sql para ver como fica

 

ai no caso eu tenho que mostra esses dados no painel da empresa

 

mYgEY.png

 

e na tela fica assim

 

WlMhw.png

 

ai no caso eu inseri um registro em todas as tabelas no usuario coloquei 3

 

mais ai num mostro 1 usuario interessado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legenda: As palavras que estiverem na cor verde, são as tabelas.

 

Vamos na lógica, você tem uma tabela chamada `empresas`, por exemplo, e mais três, uma chamada `vagas`, outra `candidatos` e a `interesses`. A `empresas`, será responsável por armazenar as empresas que anunciaram as vagas, a `vagas`, será responsável por armazenar as vagas que as empresas irão anunciar, e a `interesses`, ficará responsável, por armazenar as chaves-estrangeiras, tanto da `empresas`, quanto a da `vagas`.

 

E depois, você irá relacionar as três tabelas por chave-estrangeira. Logicamente, é isso, como estou no trabalho agora, não vai dar pra eu te mostrar como faz, mas acho que depois da explicação, dará para fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse eo problema ,negocio das tabela estao prontas eu nao to conseguindo racicinar como ficaria isso na pratica na teorica eu to entendo mais na patricica

 

eu sei que preciso dar um num rows para mostra numericamente tantos de interessados e 'X' VAGA e tbm preciso listar o titulo da vaga e um num rows para cada um kkkk nao sei nao entra na mente , ai em cada titulo vo mostra quantidade de candidatos e dps terei que criar um link para cada vaga e vai lista o curriculo de cada candidato ai jesus me ajuda

 

ta difici

 

socorro

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe não intendi direito oq você precisa

só intendi a primeira instrução

- preciso dar um num rows para mostra numericamente tantos de interessados

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim

no painel da empresa tem opção!

 

ultimos interessados na vaga

 

ai eu fiz tabela

 

Quantidade de candidatos | Titutlo da Vaga | Enviar Proposta

aqui vai mostra quantidade em numero | titulo vai aqui| e um link

 

 

ai eu preciso mostra certa quantidade de usuarios interessados em tal vaga para tal titulo de tal empresa tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT COUNT(Interessados.usuario_id), Vagas.titulo FROM Insteressados, Vagas Where Interessados.vaga_id = idvaga

 

não sei se é bem isso q você quer mas creio q a função count resolva teu problema

ref: http://www.w3schools.com/sql/sql_func_count.asp

essa query q eu fiz com certeza ta errada tem q faze o inner join pra funfa se não me engano..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai meu to perdido aqui

to entendo nada me enrolei todo

essas tabela que o luiz falo pra criar ja tinha deletado pq fiz outro teste em outro cara me perdi tbm

esse que você me acabo de manda pra mim só vai me listar o numero de vagas eu acho né.

 

eu preciso lista

 

NUmero de vaga para tal vaga e essa vaga tem que ser de tal empresa :S ta muito complicado

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Keven,

 

Isso é mais fácil do que você imagina, pense comigo (utilizando a modelagem do nosso amigo acima):

 

"Número de vagas para tal vaga e essa vaga tem que ser de tal empresa."

 

Supondo que eu tenha uma vaga de "Programador PhP" e a empresa seja "Softnyx", você já tem 2 objetos, problema resolvido.

A Empresa tem um CNPJ, correto?

E a vaga de um ID, correto?

 

SELECT COUNT(Vagas.ID) 
FROM Vagas 
WHERE Vagas.EMPRESAS_CNPJ = 'cnpj_da_empresa'

 

E se você quiser ser mais específico, do tipo: "Eu quero listar a quantidade de interessados em uma vaga X da empresa Y".

 

SELECT COUNT(Vagas_Interessados.USUARIOS_ID), Empresas.NOME
FROM Vagas 
INNER JOIN Vagas_Interessados ON (Vagas.ID = Vagas_Interessados.VAGAS_ID)
LEFT JOIN Empresas ON (Vagas.EMPRESAS_CNPJ = Empresas.CNPJ)
WHERE Vagas.ID = id_da_vaga AND Empresas.CNPJ = 'cnpj_da_empresa'

 

Problema resolvido. :]

 

Com isso, você consegue listar uma quantidade X de usuários interessados em uma vaga da empresa Y.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que entendi

no caso pra mim mostra isso

 

numerico a quantidade [x] de interessados para o titulo da vaga

 

num_rows nao iria servi dentro do while ne?

 

Serviria, mas o mais correto é você desfrutar o máximo da sua query SQL para evitar processamento desnecessário do PHP.

 

Isso é mais pra tunning (performace), mas poderia ter utilizado também.

 

=]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Keven, pode ser que minha solução não seja a mais "otimizada", nem a menos trabalhosa, mas... eu faria da seguinte maneira:

 

Quando o candidato selecionar uma vaga

Eu pegaria o id da empresa, através do CNPJ e o ID da vaga. Criaria uma tabela chamada "vagasDesejadas" com os seguintes campos:

 

id_vagas -> Primary key, auto increment

vaga_desejada_id_vaga_desejada -> Puxaria pela seleção do usuário

empresa_id_empresa -> Puxaria via cnpj

usuario_id_usuario - Puxaria pela seção

 

Através dessa tabela, eu puxaria os resultados pelo id da vaga. Suponhamos que a vaga para "moderador do fórum" tenha o ID 10. Na minha query, eu usaria:

 

$listaVagas = mysql_query
                         ("SELECT COUNT(*) as vagasDesejadas FROM vagasDesejadas WHERE vaga_desejada_id_vaga_desejada = '10' ");

$numeroInteressados = mysql_fetch_array($listaVagas);
$qtdeInteressados = $numeroInteressados ['vagasDesejadas'];

echo $qtdeInteressados;

 

É mais ou menos isso que você tá precisando véio?

Abraços!

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda não entendi :S

como isso vai me mostra

 

quantidade de usuarios interessados para tal vaga de tal empresa :S

 

eu nao consigo entender como eu mostro isso dentro do while

 

eu só preciso listar isso

Usuarios interessados [10] , vaga[Y] DA EMPRESA[j] :s pra eu mostra isso tem que ser dentro de um while ou se tiver outra forma a parte select tabela eu ja entendi só nao entendo mostra isso dentro de um while

 

:wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa.

 

Eu já te dei a resposta. ^.^

 

SELECT COUNT(Vagas_Interessados.USUARIOS_ID) as quantidadeInteressados, Empresas.NOME
FROM Vagas 
INNER JOIN Vagas_Interessados ON (Vagas.ID = Vagas_Interessados.VAGAS_ID)
LEFT JOIN Empresas ON (Vagas.EMPRESAS_CNPJ = Empresas.CNPJ)
WHERE Vagas.ID = id_da_vaga AND Empresas.CNPJ = 'cnpj_da_empresa'

 

Na no mysql_fetch_array ( ou qualquer outro que voc~e use, basta fazer isso:

 

$arrayQuery = mysql_fetch_assoc($query);

echo $arrayQuery['quantidadeInteressados'];

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.