Alan Maia 0 Denunciar post Postado Outubro 9, 2006 To com o seguinte problema estou desenvolvendo uma pequena aplicação Web em PHP para assistência técnica - Trabalho de Faculdade - e tenho as seguintes tabelas: CREATE TABLE Clientes ( ID INT (6) NOT NULL AUTO_INCREMENT, NOME VARCHAR (150) NOT NULL, ENDERECO VARCHAR (50) NOT NULL, BAIRRO VARCHAR (30) NOT NULL, CEP INT (8) NOT NULL, CIDADE VARCHAR (25) NOT NULL, FONE INT (15) NOT NULL, CELULAR INT (15) NOT NULL, ESTADO CHAR (2) NOT NULL, EMAIL VARCHAR (30) NOT NULL, OBS VARCHAR (150) NOT NULL, INDEX I1(ID), INDEX I2 (NOME), CONSTRAINT PK_ID PRIMARY KEY (ID) )TYPE=INNODBCREATE TABLE OS_ABRE( OS INT (6) NOT NULL AUTO_INCREMENT, STATUS VARCHAR (15) NOT NULL, DATA_ENT VARCHAR (10) NOT NULL, HORA_ENT VARCHAR (5) NOT NULL, ATENDENTE VARCHAR (25) NOT NULL, TIPO_EQUIP VARCHAR (25) NOT NULL, MARCA_EQUIP VARCHAR (25) NOT NULL, MODELO_EQUIP VARCHAR (25) NOT NULL, NSERIE_EQUIP VARCHAR (15) NOT NULL, PRIORIDADE_EQUIP CHAR (10) NOT NULL, ACESSORIOS_EQUIP VARCHAR (150) NOT NULL, DEFEITO VARCHAR (150) NOT NULL, NOME VARCHAR (150) NOT NULL, INDEX I3 (OS), INDEX I4 (NOME), PRIMARY KEY (OS, NOME), FOREIGN KEY (NOME) REFERENCES Clientes(NOME))TYPE=INNODBCREATE TABLE OS_BAIXA( ID_BAIXA INT (6) NOT NULL AUTO_INCREMENT, OS INT (6) NOT NULL, STATUS VARCHAR (10) NOT NULL, DATA_ENT VARCHAR (10) NOT NULL, HORA_ENT VARCHAR (5) NOT NULL, DATA_SAI VARCHAR (10) NOT NULL, HORA_SAI VARCHAR (5) NOT NULL, ATENDENTE VARCHAR (20) NOT NULL, TIPO_EQUIP VARCHAR (30) NOT NULL, MARCA_EQUIP VARCHAR (20) NOT NULL, MODELO_EQUIP VARCHAR (50) NOT NULL, NSERIE_EQUIP VARCHAR (15) NOT NULL, PRIORIDADE_EQUIP VARCHAR (10) NOT NULL, ACESSORIOS_EQUIP VARCHAR (150) NOT NULL, DEFEITO VARCHAR (150) NOT NULL, ID INT (6) NOT NULL, NOME VARCHAR (150) NOT NULL, SOLUCAO VARCHAR (150) NOT NULL, TECNICO VARCHAR (25) NOT NULL, REPOSICAO VARCHAR (150) NOT NULL, VALOR DECIMAL (10,2) NOT NULL, GARANTIA VARCHAR (3) NOT NULL, INDEX I5 (ID_BAIXA), INDEX I6 (OS), INDEX I7(ID), INDEX I8(NOME), PRIMARY KEY (ID_BAIXA, OS, ID), FOREIGN KEY (OS) REFERENCES OS(OS), FOREIGN KEY (ID) REFERENCES Clientes(ID))TYPE=INNODB Pois bem o meu problema é o seguinte quando efetuo o cadastro do cliente sem problemas, vou abrir uma OS sem problemas, agora quando vou imprimir uma OS ou dar baixa numa OS não consigo relacionar o equipamento que deu entrada com o cliente, só aparece os dados do equipamento. Se tiver uma alma caridosa que possa me ajudar nessa luta incansável dos programadores, ficarei muito satisfeito e agradecido. Acredito que deu pra entender o problema. Se possível me ajudem a montar o código em PHP tb pois o que fiz não tá dando muito certo. Grato pela atenção de todos. Alan Maia AmazonInfo Compartilhar este post Link para o post Compartilhar em outros sites
Alan Maia 0 Denunciar post Postado Outubro 9, 2006 Mudei os nomes dos indices das tabelas de I1, I2, I3... para seus respectivos nomes NOME, ID... Tabela Clientes INDEX ID(ID), INDEX NOME (NOME), Tabela OS_ABRE INDEX OS (OS), INDEX NOME (NOME), Tabela OS_BAIXA INDEX ID_BAIXA (ID_BAIXA), INDEX OS (OS), INDEX ID(ID), INDEX NOME(NOME), Para ficar mais organizado... Acrescentei o campo ID INT( 6 ) NOT NULL na tabela OS_ABRE depois de DEFEITO E retirei os campos NOME das tabelas OS_ABRE e OS_BAIXA Não sei se vai fazer muita diferença mas acredito que eram campos inuteis Compartilhar este post Link para o post Compartilhar em outros sites
walace 1 Denunciar post Postado Outubro 10, 2006 Exemplo: CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB;CREATE TABLE child(id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id)) TYPE=INNODB; Compartilhar este post Link para o post Compartilhar em outros sites
Alan Maia 0 Denunciar post Postado Outubro 10, 2006 Legal até ai entendi mas como monto uma consulta em PHP para mostrar esse relacionamento Compartilhar este post Link para o post Compartilhar em outros sites
alendre 0 Denunciar post Postado Outubro 11, 2006 Deixa eu meter o meu bedelho...$Sql = 'SELECT * FROM CLIENTS INNER JOIN OS_BAIXA ON CLIENTS.CLIENTSId = OS_BAIXA.Id_BAIXA ORDER BY CLIENTS.CLIENTSId DESC';Tenta qker coisa posta aí beleza...T+ Compartilhar este post Link para o post Compartilhar em outros sites
Alan Maia 0 Denunciar post Postado Outubro 13, 2006 Consegui com o seguinte comando SQL no proprio PHP$sql2 = "SELECT * FROM OS_ABRE, Clientes WHERE OS_ABRE.OS=Clientes.ID AND OS=$OS";Grato pela atenção de todos Compartilhar este post Link para o post Compartilhar em outros sites
Alan Maia 0 Denunciar post Postado Outubro 13, 2006 Agora to com um problema quando faço um cadastro de Abertura de OS ele só faz uma OS por Cliente ou seja um cliente só pode ter uma OS o que não pode acontecer, um cliente pode ter varias os, agora uma os só pode ter um cliente me ajudem nesse dilema para saber onde esta o erro, acredito que esteja na estrutura do banco. Compartilhar este post Link para o post Compartilhar em outros sites
Suissa 1 Denunciar post Postado Outubro 14, 2006 se um cliente pode ter N OSfaz o relacionamento da OS com cliente com a pk do cliente como fk na tabela de OS pelo q eu sei eh issocaso queira uam coisa mais separada faz tipo n:n ou seja uam tabela soh com as pks de cada tabela Compartilhar este post Link para o post Compartilhar em outros sites