Dúvida SQL

Boa tarde, estou com uma dúvida em SQL.

Eu tenho 2 tabelas uma de ‘ponto’ e outra ‘horas’.

Cada vez que eu crio um ponto eu escolho o período e o vínculo a uma hora ficando assim.

|
|Horas
==============
| id | entrada | saida | 
| 1  | 08:00   | 12:00 |
| 2  | 13:00   | 18:00 |
==============

|
|ponto
===================
| id | hora | projeto | turno  
| 1  | 1     | 2          | manha
| 2  | 2     | 2          | tarde
===================

|
|Resultado esperado
===================
| entradaManha | saidaManha | entradaTarde | saidaTarde | projeto  
| 08:00        | 12:00      | 13:00        | 18:00      | 2
===================

Minha dúvida é como eu crio um SQL que me exiba em uma linha o horario da manhã e da tarde para que eu possa exibir em meu programa.

Se houver outra forma externa ao SQL, pegando por JAVA por exemplo, é bem vinda.

testei de novo, tenta dessa forma

select (select h.entrada from horas h join ponto p on h.id = p.hora where p.turno = 'manhã') as entradaManha, (select h.saida from horas h join ponto p on h.id = p.hora where p.turno = 'manhã') as saidaManha, (select h.entrada from horas h join ponto p on h.id = p.hora where p.turno = 'tarde') as entradaTarde, (select h.saida from horas h join ponto p on h.id = p.hora where p.turno = 'tarde') as saidaTarde from dual

[quote=André Fonseca]tenta assim

select ( select h.entrada as entradaManha, h.saida as saidaManha from horas h join pont p on h.id = p.hora where p.turno = 'manha'), ( select h.entrada as entradaTarde, h.saida as saidaTarde from horas h join pont p on h.id = p.hora where p.turno = 'tarde') from dual
[/quote]

edu_fernandes acho que sresolve o seu problema isso ai =]

Voce é de ourinhos? Moro em sta cruz do rio pardo :slight_smile:

douglascst90 faz FATEC?

Conheci um Douglas na FATEC.

Ainda não testei os códigos, assim que testar aviso.

[quote=André Fonseca]testei de novo, tenta dessa forma

select (select h.entrada from horas h join ponto p on h.id = p.hora where p.turno = 'manhã') as entradaManha, (select h.saida from horas h join ponto p on h.id = p.hora where p.turno = 'manhã') as saidaManha, (select h.entrada from horas h join ponto p on h.id = p.hora where p.turno = 'tarde') as entradaTarde, (select h.saida from horas h join ponto p on h.id = p.hora where p.turno = 'tarde') as saidaTarde from dual[/quote]

Mensagem de erro

Subquery returns more than 1 row

[quote=edu_fernandes]
Mensagem de erro

Subquery returns more than 1 row[/quote]

Isso está acontecendo pois os registros não são exatamentes iguais ao que você passou.

Na tabela ponto, como posso saber que um registro da manhã está relacionado a um registro da tarde?
Por projeto apenas?
Não tem mais colunas nessa tabela? Como o id da pessoa por exemplo…

De forma geral, você poderia fazer algo assim:

  SELECT manha.entrada entradaManha, manha.saida saidaManha, tarde.entrada entradaTarde, tarde.saida saidaTarde
  FROM 
    (  SELECT entrada, saida, projeto FROM ponto WHERE turno = 'manha'  ) manha
    INNER JOIN (  SELECT entrada, saida, projeto FROM ponto WHERE turno = 'tarde'  ) tarde
    ON manha.projeto = tarde.projeto   

A clausula ON muda de acordo com a relação entre os registros de ponto.

Fiz sistemas na fio, tive aula com sergio delfino, rogerio lazanha etc… hehehe!