Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como listar os materiais da consulta mais cara


leigan

Pergunta

Boa tarde pessoal, minha duvida é um seguinte, como listar o nome e código de todo os materiais utilizados na consulta mais cara da clinica;

select nome, materiais.codigo, consultas.id_consulta,preço*qtd + valor 
from consultas, materiais_utilizados, materiais 
where consultas.id_consulta = materiais_utilizados.id_consulta and materiais_utilizados.codigo = materiais.codigo 
group by materiais_utilizados.id_consulta;

Abraços

Editado por Denis Courcy
colocar código entre CODEs acertar titulo do topico
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

As tabelas são:

mysql> desc materiais;

+-----------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+-------------+------+-----+---------+----------------+

| preço | float | YES | | NULL | |

| nome | text | YES | | NULL | |

| codigo | int(11) | NO | PRI | NULL | auto_increment |

| tipo | varchar(20)| YES | | NULL | |

+-----------+-------------+------+-----+---------+----------------+

4 rows in set (0.01 sec)

mysql> desc materiais_utilizados;

+-------------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------------+---------+------+-----+---------+-------+

| codigo | int(11) | YES | | NULL | |

| id_consulta| int(11) | YES | | NULL | |

| qtd | int(11) | YES | | NULL | |

+-------------+---------+------+-----+---------+-------+

3 rows in set (0.01 sec)

mysql> desc materiais consultas;

Empty set (0.01 sec)

mysql> desc consultas;

+------------------------+-------------+------+-----+---------+------------------+

| Field | Type | Null | Key | Default | Extra |

+------------------------+-------------+------+-----+---------+------------------+

| id_consulta | int(11) | NO | PRI | NULL | auto_increment|

| nome_responsavel | varchar(25)| YES | | NULL | |

| rg_responsavel | int(11) | YES | | NULL | |

| data_hora | date | YES | | NULL | |

| cod_paciente | int(11) | YES | | NULL | |

| cro | int(11) | YES | | NULL | |

| telefone_responsavel| int(11) | YES | | NULL | |

| valor | int(11) | YES | | NULL | |

+------------------------+-------------+------+-----+---------+------------------+

8 rows in set (0.01 sec)

Link para o comentário
Compartilhar em outros sites

  • 0

Ok. Obrigado por fornecer a estrutura das tabelas.

Neste tipo de consulta você deve pensar de tras para diante.

Primeiro vamos descobrir qual a consulta mais cara:

SELECT id_consulta
FROM consultas 
ORDER BY valor DESC
LIMIT 1
Agora vamos listar o código e o nome de todos os materiais usados por esta consulta
SELECT STRAIGHT_JOIN m.codigo, m.nome
FROM materiais m
INNER JOIN materiais_utilizados mu ON mu.codigo = m.codigo
WHERE mu.id_consulta = (SELECT id_consulta
FROM consultas 
ORDER BY valor DESC
LIMIT 1)

Creio que você poderá continuar daqui.

sds

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...