Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Como listar os materiais da consulta mais cara


leigan

Question

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

Edited by Denis Courcy
colocar código entre CODEs acertar titulo do topico
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...