Ir para conteúdo

POWERED BY:

Arquivado

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

rogerblower

Select errado ou relacionamento com mais de 3 tabelas?

Recommended Posts

Pessoal me deparei com um problema no select com varias tabelas estou conseguindo consultar como desejo até três tabelas orcamento, veiculos e a clientes, até aqui tudo funciona como imaginei, so que preciso inserir mais duas tabelas na consulta são elas detalhe_orcamento e mao_obra

 

Quando insiro no select essas duas ultimas tabelas a pagina exibir não mostra nada e as vezez mostra dados duplicados e misturado ex: veiculo com proprietário diferente.

 

O select deve mostrar um "relatório" de orçamento com os dados do proprietário, veiculo e a relação de serviços a serem executados, serviços esses que são puxado da tabela mao_obra e gravado na tabela detalhe_orcamento, vou postar as tabelas e o select talvez fique mais fácil para ver onde esta o erro.

 

Tabelas

-- Estrutura da tabela `orcamento`
--

CREATE TABLE IF NOT EXISTS `orcamento` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `veiculo_id` int(4) NOT NULL,
  `cliente_id` int(4) NOT NULL,
  `funcio_id` int(11) NOT NULL,
  `data` text NOT NULL,
  `cond_pagamento` text NOT NULL,
  `qtdparcelas` text NOT NULL,
  `valorparcela` text NOT NULL,
  `datainicio` text NOT NULL,
  `datatermino` text NOT NULL,
  `validadeorcamento` text NOT NULL,
  `ativo` enum('0','1') NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `veiculo_id` (`veiculo_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

--
-- RELATIONS FOR TABLE `orcamento`:
--   `veiculo_id`
--       `veiculos` -> `id`

-- Limitadores para a tabela `orcamento`
--
ALTER TABLE `orcamento`
  ADD CONSTRAINT `orcamento_ibfk_1` FOREIGN KEY (`veiculo_id`) REFERENCES `veiculos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;





CREATE TABLE IF NOT EXISTS `detalhe_orcamento` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `orcamento_id` int(11) NOT NULL,
  `mao_obra_id` varchar(100) NOT NULL,
  `preco` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `mao_obra_id` (`mao_obra_id`),
  KEY `orcamento_id` (`orcamento_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=397 ;

--
-- RELATIONS FOR TABLE `detalhe_orcamento`:
--   `mao_obra_id`
--       `mao_obra` -> `id`
--   `orcamento_id`
--       `orcamento` -> `id`



-- Estrutura da tabela `mao_obra`
--

CREATE TABLE IF NOT EXISTS `mao_obra` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mao_obra` text NOT NULL,
  `orcamento_id` int(11) NOT NULL,
  `preco` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `orcamento_id` (`orcamento_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;

Código do select no exibir_orcamento.php

 

$id = $_GET['id'];

$seleciona = mysql_query("
SELECT orcamento.*, clientes.*, veiculos.*, detalhe_orcamento.*, mao_obra.*FROM orcamento 
INNER JOIN clientes ON clientes.id = orcamento.cliente_id
INNER JOIN veiculos ON veiculos.id = orcamento.cliente_id
INNER JOIN detalhe_orcamento ON detalhe_orcamento.orcamento_id = orcamento.id
INNER JOIN mao_obra ON mao_obra.id = detalhe_orcamento.mao_obra_id

WHERE orcamento.id = '$id'" ) or die (mysql_error());


if($seleciona == ''){
	echo 'Erro';
	
}else{
		while($res_id = $row = mysql_fetch_assoc($seleciona)){

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

desse jeito se um cliente tiver 2 carros vai duplicar mesmo

 

Tenho uma pagina listar_orcamento.php onde lista todos os orçamentos no caso de 1 cliente com 2 carros ele lista assim:

 

Nº Orçamento | Cliente | Modelo | Placa

2 | Roger | Gol | AAA-1234 | (Ícone para visualizar o orçamento)

3 | Roger | Palio | BBB-4567 | (Ícone para visualizar o orçamento)

 

Não seria nessa página que devo separar os carros e clientes?

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.