Ir para conteúdo

POWERED BY:

Arquivado

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

Patricia_m

Consultar duas tabelas

Recommended Posts

Olá a todos,

 

tenho duas tabelas, empregados e filhos, quero fazer uma consultar para retirar todos os dados do empregado e dizer quantos filhos tem com base no número de registos da tabela filhos. :S

 

Será que alguém me pode dar uma ajuda?Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria assim, mas neste momento nao me esta a contar os filhos de cada empregado e nao percebo o que esta mal no select

SELECT count(c.nome), e.emp_nome as filhos FROM natal_empregados e, natal_criancas c WHERE e.emp_nif= c.nif

Compartilhar este post


Link para o post
Compartilhar em outros sites

empregados(nome, numero, nif, morada)

criancas(nome, nif_pai,idade)

 

 

quero que o select me conte quantos filhos tem cada empregado, onde o nif do empregado é igual ao nif_pai da criança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Haaa agora sim

 

Tenta isso

 

SELECT * FROM EMPREGADOS INNER JOIN CRIANCAS ON CRIANCAS.NIF = EMPREGADOR.NIF

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT COUNT(CRIANCAS.NIF_PAI) AS FILHOS,EMPREGADOS.NOME FROM EMPREGADOS

INNER JOIN CRIANCAS ON CRIANCAS.NIF_PAI = EMPREGADOR.NIF

GROUP BY COUNT(CRIANCAS.NIF_PAI), EMPREGADOS.NOME

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim, tive que tirar o ultimo count

 

SELECT natal_empregados.emp_nome, count(natal_criancas.nome) as filhos FROM natal_empregados,natal_criancas where natal_criancas.nif = natal_empregados.emp_nif

group by natal_criancas.nif, natal_empregados.emp_nome

 

Muito obrigada:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta por no lugar disso

 

count(natal_criancas.nome) as filhos

isso

 

coalesce(count(natal_criancas.nome),0) as filhos

Compartilhar este post


Link para o post
Compartilhar em outros sites

:S Não dá....

 

O problema deve mesmo ser da consulta. Porque eu quero ver os dados dos empregados, quer tenham filhos ou não. Quero é uma coluna (a coluna filhos) em que me apareça o número de filhos. Por exemplo:

Nome do empregado Nº de Filhos

xpto----------------- 1

abc------------------ 0

 

neste momento só me mostra os registos que têm filhos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que no seu WHERE você pediu só pra trazer quem tem filhos

 

SELECT natal_empregados.emp_nome, count(natal_criancas.nome) as filhos
FROM natal_empregados,natal_criancas 
WHERE natal_criancas.nif = natal_empregados.emp_nif and count(natal_criancas.nome) = 0
group by natal_criancas.nif, natal_empregados.emp_nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, deu aquele erro:S:S

 

Deve ser por causa do count a seguir ao where.... Eu sei o que tenho que fazer mas nao sei como. Ou seja, quero que me devolva os dados tanto dos empregados que tem registos correspondentes na tabela filhos, como os que nao tenham....

Compartilhar este post


Link para o post
Compartilhar em outros sites

E agora com este ?

 


SELECT natal_empregados.emp_nome, count(natal_criancas.nome) as filhos
FROM natal_empregados,natal_criancas 
WHERE natal_criancas.nif = natal_empregados.emp_nif and count(natal_criancas.nome) = 0
GROUP BY count(natal_criancas.nome), natal_empregados.emp_nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao e se for algo do gereno, natal_empregados.emp_nif = natal_criancas.nif and registos a null?

 

Também não está a dar. Dá sempre o erro #1111 - Invalid use of group function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por acaso esta consulta funciona ae:

 

SELECT EMPREGADOS.NOME, COALESCE(COUNT(CRIANCAS.NOME),0) AS FILHOS
FROM CRIANCAS
LEFT JOIN EMPREGADOS ON EMPREGADOS.NIF = CRIANCAS.NIF_PAI AND CRIANCAS.NIF = 0

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.