Definir determinado campo de uma tabela para select
06/05/2016
0
Me ajudem!! Estou aqui com um probleminha, tenho um BD com as seguintes tabelas baixo, que no caso fazem um relacionamento para gerar a tabela "notas"
Eu preciso imprimir a ficha, porém no uso normal ele sempre me traz a ficha em andamento. Eu queria poder definir pelo campo id_ano para ele trazer a fase que eu preciso com as notas daquele ano.
As très tabela que tenho:
CREATE TABLE IF NOT EXISTS `clientes` (
`id_cliente` int(10) NOT NULL AUTO_INCREMENT,
`nome` varchar(150) NOT NULL,
`cargo` varchar(150) NOT NULL,
`rg` varchar(150) NOT NULL,
PRIMARY KEY (`id_cliente`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `clientes` (`id_cliente`, `nome`, `cargo`, `rg`) VALUES
(1, 'Livia', 'pretendente', '0000000001');
CREATE TABLE IF NOT EXISTS `fases` (
`id_fase` int(10) NOT NULL AUTO_INCREMENT,
`id_ano` int(10) NOT NULL,
`fase` varchar(255) NOT NULL,
PRIMARY KEY (`id_fase`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `fases` (`id_fase`, `fase`) VALUES
(1, 'FASE 1'),
(2, 'FASE 2'),
(3, 'FASE 3'),
(4, 'FASE 4'),
(5, 'FASE 5');
CREATE TABLE IF NOT EXISTS `anos` (
`id_ano` int(10) NOT NULL AUTO_INCREMENT,
`ano` varchar(30) NOT NULL,
PRIMARY KEY (`id_ano`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2020 ;
INSERT INTO `anos` (`id_ano`, `ano`) VALUES
(2012, '2012'),
(2013, '2013'),
(2014, '2014'),
(2015, '2015'),
(2016, '2016'),
(2017, '2017'),
(2018, '2018'),
(2019, '2019'),
No relacionamento se cria a tabela notas abaixo
CREATE TABLE IF NOT EXISTS `notas` (
`id_cliente` int(10) NOT NULL,
`id_fase` int(10) NOT NULL,
`id_ano` int(10) NOT NULL,
`id_criterio` int(10) NOT NULL,
`avalia1` varchar(10) DEFAULT NULL,
`avalia2` varchar(10) DEFAULT NULL,
`avalia3` varchar(10) DEFAULT NULL,
`avalia4` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `notas` (`id_cliente`, `id_fase`, `id_ano`, `id_criterio`, `avalia1`, `avalia2`, `avalia3`, `avalia4`) VALUES
(1, 1, 2014, 1, '5.00', '6.00', NULL, NULL),
(2, 1, 2014, 1, '6.00', '8.00', NULL, NULL),
(3, 1, 2014, 1, '6.00', '8.00', NULL, NULL),
(1, 2, 2015, 1, '8.00', '3.00', NULL, NULL),
(1, 3, 2016, 1, '5.00', '7.00', NULL, NULL),
(1, 4, 2017, 1, '5.00', '7.00', NULL, NULL),
(1, 5, 2018, 1, '5.00', '7.00', NULL, NULL);
No arquivo está assim:
<tr><td>
<b>DEPARTAMENTO:</b<?php
$id_fase = mysql_result(mysql_query("SELECT id_fase FROM notas WHERE id_cliente=$_GET[id_cliente]"), 0, id_fase);
echo mysql_result(mysql_query("SELECT fase FROM fases WHERE id_fase=$id_fase"), 0, fase)
?></td></tr>
No primeiro select pego o id da fase, e no echo trago o nome da fase da tabela fases.
Queria saber como nesse primeiro select eu definir nele o ano que quero. 2014, 2016.... da tabela notas Não importa, eu preciso definir isso no select, vai me facilitar. Dessa forma ele vai me trazer os dados que quero do ano certo.
Peço que não me deem outras alternativas fugindo disso, pois só vai me gerar outros trabalhos no código. E no momento isso me ajuda muito.
Eu preciso imprimir a ficha, porém no uso normal ele sempre me traz a ficha em andamento. Eu queria poder definir pelo campo id_ano para ele trazer a fase que eu preciso com as notas daquele ano.
As très tabela que tenho:
CREATE TABLE IF NOT EXISTS `clientes` (
`id_cliente` int(10) NOT NULL AUTO_INCREMENT,
`nome` varchar(150) NOT NULL,
`cargo` varchar(150) NOT NULL,
`rg` varchar(150) NOT NULL,
PRIMARY KEY (`id_cliente`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `clientes` (`id_cliente`, `nome`, `cargo`, `rg`) VALUES
(1, 'Livia', 'pretendente', '0000000001');
CREATE TABLE IF NOT EXISTS `fases` (
`id_fase` int(10) NOT NULL AUTO_INCREMENT,
`id_ano` int(10) NOT NULL,
`fase` varchar(255) NOT NULL,
PRIMARY KEY (`id_fase`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `fases` (`id_fase`, `fase`) VALUES
(1, 'FASE 1'),
(2, 'FASE 2'),
(3, 'FASE 3'),
(4, 'FASE 4'),
(5, 'FASE 5');
CREATE TABLE IF NOT EXISTS `anos` (
`id_ano` int(10) NOT NULL AUTO_INCREMENT,
`ano` varchar(30) NOT NULL,
PRIMARY KEY (`id_ano`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2020 ;
INSERT INTO `anos` (`id_ano`, `ano`) VALUES
(2012, '2012'),
(2013, '2013'),
(2014, '2014'),
(2015, '2015'),
(2016, '2016'),
(2017, '2017'),
(2018, '2018'),
(2019, '2019'),
No relacionamento se cria a tabela notas abaixo
CREATE TABLE IF NOT EXISTS `notas` (
`id_cliente` int(10) NOT NULL,
`id_fase` int(10) NOT NULL,
`id_ano` int(10) NOT NULL,
`id_criterio` int(10) NOT NULL,
`avalia1` varchar(10) DEFAULT NULL,
`avalia2` varchar(10) DEFAULT NULL,
`avalia3` varchar(10) DEFAULT NULL,
`avalia4` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `notas` (`id_cliente`, `id_fase`, `id_ano`, `id_criterio`, `avalia1`, `avalia2`, `avalia3`, `avalia4`) VALUES
(1, 1, 2014, 1, '5.00', '6.00', NULL, NULL),
(2, 1, 2014, 1, '6.00', '8.00', NULL, NULL),
(3, 1, 2014, 1, '6.00', '8.00', NULL, NULL),
(1, 2, 2015, 1, '8.00', '3.00', NULL, NULL),
(1, 3, 2016, 1, '5.00', '7.00', NULL, NULL),
(1, 4, 2017, 1, '5.00', '7.00', NULL, NULL),
(1, 5, 2018, 1, '5.00', '7.00', NULL, NULL);
No arquivo está assim:
<tr><td>
<b>DEPARTAMENTO:</b<?php
$id_fase = mysql_result(mysql_query("SELECT id_fase FROM notas WHERE id_cliente=$_GET[id_cliente]"), 0, id_fase);
echo mysql_result(mysql_query("SELECT fase FROM fases WHERE id_fase=$id_fase"), 0, fase)
?></td></tr>
No primeiro select pego o id da fase, e no echo trago o nome da fase da tabela fases.
Queria saber como nesse primeiro select eu definir nele o ano que quero. 2014, 2016.... da tabela notas Não importa, eu preciso definir isso no select, vai me facilitar. Dessa forma ele vai me trazer os dados que quero do ano certo.
Peço que não me deem outras alternativas fugindo disso, pois só vai me gerar outros trabalhos no código. E no momento isso me ajuda muito.
Livia Sampaio
Curtir tópico
+ 0
Responder
Posts
07/05/2016
Raylan Zibel
Voce quer que essa consulta
fique assim
ou assim
?
"SELECT id_fase FROM notas WHERE id_cliente=".$_GET["id_cliente"]
fique assim
"SELECT id_fase FROM notas WHERE (id_cliente=".$_GET["id_cliente"].") and (id_ano=".$_GET[id_ano].")"
ou assim
"SELECT id_fase FROM notas WHERE (id_cliente=".$_GET["id_cliente"].") and (id_ano=".date("Y").")"
?
Responder
07/05/2016
Livia Sampaio
Do seu modo eu não definiria o ano certo que quero, mas já resolvi..
Acrescentei a linha AND id_ano= 2014 , agora ele puxa exatamente o campo e não pelo id, ali defino o ano que quero
Mas obrigada.
Acrescentei a linha AND id_ano= 2014 , agora ele puxa exatamente o campo e não pelo id, ali defino o ano que quero
Mas obrigada.
<?php $id_fase = mysql_result(mysql_query("SELECT id_fase FROM notas WHERE id_cliente=$_GET[id_cliente] AND id_ano= 2014"), 0, id_fase); echo mysql_result(mysql_query("SELECT fase FROM fases WHERE id_fase=$id_fase"), 0, fase) ?>
Responder
Clique aqui para fazer login e interagir na Comunidade :)