11closed 0 Denunciar post Postado Dezembro 15, 2011 ola tudo bem ? estou criando um esquema de atualizações mais recente. gostaria de consutar 3 tabelas ao msm tempo e imprimir os resultados em ordem de data. eu fis esse codigo, mas acho que ele ñ vai dar certo.. postei aq para tentar explicar oq eu quero. tipo assim: $sql2 = "SELECT * FROM ".$tabela27." WHERE CODIGOID_USERS_USERS_ASSINATURAS = '".$linha1["ID_USERS"]."'"; $query2 = mysql_query($sql2); $quants2 = mysql_num_rows($query2); while($linha2 = mysql_fetch_array($query2)){ $sql6 = "SELECT * FROM $tabela12,$tabela3,$tabela5 WHERE CODIGOID_CONTRATO_EMP = '".$linha2["CODIGOID_EMP_USERS_ASSINATURAS"]."' && ATIVO_CONTRATO_EMP = 'S' || IDCODIGO_EVENTOS_EMP = '".$linha2["CODIGOID_EMP_USERS_ASSINATURAS"]."' || CODIGOID_PRODUTOS_EMP = '".$linha2["CODIGOID_EMP_USERS_ASSINATURAS"]."' ORDER BY DATACADASTRO_CONTRATO_EMP,DATACADASTRO_EVENTOS_EMP,DATACADASTRO_PRODUTOS_EMP ASC "; $query6 = mysql_query($sql6); while($linha6 = mysql_fetch_array($query6)){ if ($linha6["ID_CONTRATO_EMP"] != "") { echo "Contrato - ".$linha6["ID_CONTRATO_EMP"]."- ".$linha6["DATACADASTRO_CONTRATO_EMP"]."<br>"; } if ($linha6["ID_EVENTOS_EMP"] != "") { echo "Eventos - ".$linha6["ID_EVENTOS_EMP"]."- ".$linha6["DATACADASTRO_EVENTOS_EMP"]."<br>"; } if ($linha6["ID_PRODUTOS_EMP"] != "") { echo "Produtos - ".$linha6["ID_PRODUTOS_EMP"]."- ".$linha6["DATACADASTRO_PRODUTOS_EMP"]."<br>"; } } } esta imprimindo assim: Contrato - 3 - 2011-06-15 Eventos - 20 - 2011-01-20 Produtos - 54 - 2011-07-20 Contrato - 3 - 2011-06-15 Eventos - 20 - 2011-01-20 Produtos - 55 - 2011-08-31 Contrato - 3 - 2011-06-15 Eventos - 20 - 2011-01-20 Produtos - 42 - 2011-12-01 Contrato - 3 - 2011-06-15 Eventos - 20 - 2011-01-20 Produtos - 37 - 2011-12-02 .... etc seguindo o exemplo acima Gostaria que imprimisse nessa ordem, e sem repetir resultados Produtos - 37 - 2011-12-02 Produtos - 42 - 2011-12-01 Produtos - 55 - 2011-08-31 Produtos - 54 - 2011-07-20 Contrato - 3 - 2011-06-15 Eventos - 20 - 2011-01-20 .... etc O comando && ATIVO_CONTRATO_EMP = 'S' não esta funcionando pq sera? alguem sabe uma forma correta de fazer esse esquema ? quem souber por favor, ficarei muito grato pela ajuda !!! t+ Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Dezembro 17, 2011 ola vou mostrar minhas tabelas na tabela27 CODIGOID_USERS_USERS_ASSINATURAS - id do usuario CODIGOID_EMP_USERS_ASSINATURAS - id da empresa $tabela12 CODIGOID_CONTRATO_EMP - id da empresa que cadastro esse contrato ATIVO_CONTRATO_EMP - se o contrato ta ativo ou não DATACADASTRO_CONTRATO_EMP data de cadastro do contrato $tabela3 IDCODIGO_EVENTOS_EMP - id da empresa que cadastro esse evento DATACADASTRO_EVENTOS_EMP - data de cadastro do evento $talbela5 CODIGOID_PRODUTOS_EMP - id da empresa que cadastro esse produto DATACADASTRO_PRODUTOS_EMP - data de cadastro do produto a tabela27 tem quantas empresas o usuario assina então eu quero selecionar todas as empresas que o usuario assina e imprimir em ordem de data mais recentes os recursos das empresas ($tabela12, $tabela3 e $tabela5) como faço isso ? Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Dezembro 21, 2011 olá galera andei pesquisando muito e percebi que isso teve ser feito usando o comando INNER JOIN fis varios teste aq mas ñ obtive bons resultados. como que eu faço para vincular essas tabelas em uma só consuta para que na hora que imprimir os resultados no loop em ordem de Data; preciso selecionar CODIGOID_USERS_USERS_ASSINATURAS onde = ao id do user, ai pegar os resultados de CODIGOID_EMP_USERS_ASSINATURAS e selecionar onde CODIGOID_EMP_USERS_ASSINATURAS = CODIGOID_CONTRATO_EMP e ATIVO_CONTRATO_EMP = S CODIGOID_EMP_USERS_ASSINATURAS = IDCODIGO_EVENTOS_EMP e CODIGOID_EMP_USERS_ASSINATURAS = CODIGOID_PRODUTOS_EMP ai imprimir tudo em ordem de datas alguem saberia me dar uma luz ? Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Dezembro 21, 2011 Não entendi exatamente o relacionamento de suas tabelas, mas a lógica é esta: SELECT t1.campo_qualquer. t2.campo_qualquer FROM tabela01 t1 LEFT JOIN tabela02 t2 ON(t2.id = t1.referenciaID) LEFT JOIN tabela03 t3 ON(t3.id = t1.referenciaID) WHERE ... ORDER BY data DESC; Tente substituir as tabelas pelas suas reais e veja se é o que pretende. Em "ON()", informe os campos que se relacionam nas tabelas. Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel1 1 Denunciar post Postado Dezembro 21, 2011 olá galera andei pesquisando muito e percebi que isso teve ser feito usando o comando INNER JOIN fis varios teste aq mas ñ obtive bons resultados. como que eu faço para vincular essas tabelas em uma só consuta para que na hora que imprimir os resultados no loop em ordem de Data; preciso selecionar CODIGOID_USERS_USERS_ASSINATURAS onde = ao id do user, ai pegar os resultados de CODIGOID_EMP_USERS_ASSINATURAS e selecionar onde CODIGOID_EMP_USERS_ASSINATURAS = CODIGOID_CONTRATO_EMP e ATIVO_CONTRATO_EMP = S CODIGOID_EMP_USERS_ASSINATURAS = IDCODIGO_EVENTOS_EMP e CODIGOID_EMP_USERS_ASSINATURAS = CODIGOID_PRODUTOS_EMP ai imprimir tudo em ordem de datas alguem saberia me dar uma luz ? Seria mais ou menos isso ? select tabela27.CODIGOID_USERS_USERS_ASSINATURAS,tabela27.CODIGOID_EMP_USERS_ASSINATURAS,tabela12.CODIGOID_CONTRATO_EMP,tabela12.ATIVO_CONTRATO_EMP,tabela12.DATACADASTRO_CONTRATO_EMP,tabela3.IDCODIGO_EVENTOS_EMP,tabela3.DATACADASTRO_EVENTOS_EMP,talbela5.CODIGOID_PRODUTOS_EMP,talbela5.DATACADASTRO_PRODUTOS_EMP from tabela27 inner join tabela12 on tabela12.CODIGOID_CONTRATO_EMP = tabela27.CODIGOID_EMP_USERS_ASSINATURAS inner join tabela3 on tabela27.CODIGOID_USERS_USERS_ASSINATURAS = tabela3.IDCODIGO_EVENTOS_EMP inner join tabela5 on tabela27.CODIGOID_USERS_USERS_ASSINATURAS = talbela5.CODIGOID_PRODUTOS_EMP where tabela27.CODIGOID_USERS_USERS_ASSINATURAS = ao id do user ??? and tabela12.ATIVO_CONTRATO_EMP = S order by talbela5.DATACADASTRO_PRODUTOS_EMP agora eu fiquei em dúvida se você quer fazer order by com talbela5.DATACADASTRO_PRODUTOS_EMP ou com tabela3.DATACADASTRO_EVENTOS_EMP não entendi direito. Espero ter pelo menos dado uma luz poruqe não faço a mínima idéia se o código está funcionando. Até + Compartilhar este post Link para o post Compartilhar em outros sites
NEOS 0 Denunciar post Postado Dezembro 22, 2011 Gostaria de ajudar, mas, seria muito mais fácil se você postasse o conteúdo (3 a 5 linhas de cada tabela) das tabelas em sql. Assim fica mais fácil recriar o ambiente do seu projeto e fazer testes. Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Dezembro 23, 2011 olá NEOS vo mandar as tabelas tabela27 CODIGOID_USERS_USERS_ASSINATURAS 1 3 1 CODIGOID_EMP_USERS_ASSINATURAS 1 1 2 aq quer dizer que o usuario "1" assina a empresa 1 e 2 e o usuario 3 assina a empresa 1. tabela12 CODIGOID_CONTRATO_EMP 2 1 1 ATIVO_CONTRATO_EMP S N S DATACADASTRO_CONTRATO_EMP 2011-12-01 2011-06-15 2011-12-02 aq quer dizer que a empresa 2 cadastrou um contrato e ele esta Ativo e a empresa 1 cadastrou dois contratos e um esta Ativo e o outro esta Inativo. tabela3 IDCODIGO_EVENTOS_EMP | 1 2 3 DATACADASTRO_EVENTOS_EMP 2011-11-01 2011-12-01 2011-11-01 aq quer dizer que a empresa "1" cadastrou um evento dia 2011-11-01 e a empresa" 2" 2011-12-01 e a empresa "3" 2011-11-01 tabela5 CODIGOID_PRODUTOS_EMP | 1 2 3 DATACADASTRO_PRODUTOS_EMP 2011-12-01 2011-07-01 2011-10-11 aq é a msm coisa a empresa "1 2 e 3 cadastraram um produto cada em tal data" Logico que ñ esta todos os campos ai apenas os pricipais para criar esse script, ok. ex: quando o usuario loga na pagina vai verificar id do usuario igual a CODIGOID_USERS_USERS_ASSINATURAS e pegar as empresas que o usuario assina, por exemplo se for o usuario "1" que esta logado vai pegar de CODIGOID_EMP_USERS_ASSINATURAS a empresa 1 e 2, ai era emprimir em ordem de datas tudo onde CODIGOID_PRODUTOS_EMP, IDCODIGO_EVENTOS_EMP e CODIGOID_CONTRATO_EMP = a 1 ou 2 e ATIVO_CONTRATO_EMP = S. certo ? Daniel1 eu testei o script que você passou, e foi de grande ajuda, dexei assim select *from $tabela27inner join $tabela12 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela12.CODIGOID_CONTRATO_EMP inner join $tabela3 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela3.IDCODIGO_EVENTOS_EMP inner join $tabela5 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela5.CODIGOID_PRODUTOS_EMPwhere $tabela27.CODIGOID_USERS_USERS_ASSINATURAS = '".$id_user."' && $tabela12.ATIVO_CONTRATO_EMP = 'S'ORDER BY $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP ASC Só que não esta em ordem de datas, e esta repetindo resultados tentei colocar DISTINCT mas ñ funcionou, ñ sei oq estou fazendo de errado.. Na hora de imprimir o resultados como seria assim: $sql = "select DISTINCT * from $tabela27 inner join $tabela12 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela12.CODIGOID_CONTRATO_EMP inner join $tabela3 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela3.IDCODIGO_EVENTOS_EMP inner join $tabela5 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela5.CODIGOID_PRODUTOS_EMP where $tabela27.CODIGOID_USERS_USERS_ASSINATURAS = '".$id_user."' && $tabela12.ATIVO_CONTRATO_EMP = 'S' ORDER BY $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP DESC"; $query = mysql_query($sql); $quants = mysql_num_rows($query); while($linha = mysql_fetch_array($query)){ if ($linha["ID_PRODUTOS_EMP"] != "") { echo $linha["ID_PRODUTOS_EMP"]."<br>"; } if ($linha["ID_EVENTO_EMP"] != "") { echo $linha["ID_EVENTO_EMP"]."<br>"; } if ($linha["ID_CONTRATO_EMP"] != "") { echo $linha["ID_CONTRATO_EMP"]."<br>"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Daniel1 1 Denunciar post Postado Dezembro 23, 2011 select *from $tabela27inner join $tabela12 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela12.CODIGOID_CONTRATO_EMP inner join $tabela3 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela3.IDCODIGO_EVENTOS_EMP inner join $tabela5 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela5.CODIGOID_PRODUTOS_EMPwhere $tabela27.CODIGOID_USERS_USERS_ASSINATURAS = '".$id_user."' && $tabela12.ATIVO_CONTRATO_EMP = 'S'ORDER BY $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP ASC Você não pode por um select * porque se sua tabela tem mais campos que você quer pegar e mostrar vai dar erro, tem que colocar do jeito que fiz: select Tabela1.nomedocampo, Tabela1.nomedocampo2, Tabela2.nomedocampo,Tabela2.nomedocampo2 etc para o sql saber de qual tabela é aquele campo, porque eu posso por exemplo, ter id na tabela1,tabela2 e tabela3 se eu quero dar um select na tabela1 e saber os dados de todas as outras tabelas unindo com inner join eu não posso simplesmente fazer isso: select * from Tabela1 inner join tabela2 on tabela1.id=tabela1.id ele vai selecionar somente os ids da tabela1 se os dados da Tabela1 forem iguas da tabela2. Ou talvez todos os dados da tabela 1 eu não testei então não sei direito o que vai acontecer, mas eu acho que só os dados da tabela1 aparecem e não das outras tabelas, ou talvez mais grave aparece todos os dados de todas as tabelas que você uniu com inner join se as condições forem as que você propos. Agora olha da diferença: select tabela1.id,tabela2.id inner join tabela2 on tabela1.id=tabela2.id agora ele vai mostrar o id da tabela 1 e da tabela 2 se o id da tabela 1 for igual da tabela 2 Bom eu não sou muito bom em sql mas é mais ou menos isso que entendo de sql server. Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Dezembro 23, 2011 olá Daniel1 obrigado pela dica. olha fico assim select DISTINCT $tabela3.ID_EVENTOS_EMP, $tabela3.IDCODIGO_EVENTOS_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.ID_PRODUTOS_EMP, $tabela5.CODIGOID_PRODUTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP, $tabela12.ID_CONTRATO_EMP, $tabela12.CODIGOID_CONTRATO_EMP, $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela27.CODIGOID_USERS_USERS_ASSINATURAS, $tabela27.CODIGOID_EMP_USERS_ASSINATURAS from $tabela27 inner join $tabela12 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela12.CODIGOID_CONTRATO_EMP inner join $tabela3 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela3.IDCODIGO_EVENTOS_EMP inner join $tabela5 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela5.CODIGOID_PRODUTOS_EMP where $tabela27.CODIGOID_USERS_USERS_ASSINATURAS = '".$id_user."' && $tabela12.ATIVO_CONTRATO_EMP = 'S' ORDER BY $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP DESC na hora de imprimir os resultados como que eu faço ? fiz assim, mas não deu certo. while($linha2 = mysql_fetch_array($query2)){ if ($linha2["ID_PRODUTOS_EMP"] != "") { echo "Produto - ".$linha2["ID_PRODUTOS_EMP"]."<br>"; }else if ($linha2["ID_EVENTOS_EMP"] != "") { echo "Eventos - ".$linha2["ID_EVENTOS_EMP"]."<br>"; }else if ($linha2["ID_CONTRATO_EMP"] != "") { echo "Contratos - ".$linha2["ID_CONTRATO_EMP"]."<br>"; } } dessa forma imprimiu varios produtos, e os eventos e contratos não imprimiu nenhum. e mais uma pergunta parece que o comando DISTINCT, não esta funcionando, pois os resultados estão repetindo t+ Compartilhar este post Link para o post Compartilhar em outros sites
Daniel1 1 Denunciar post Postado Dezembro 24, 2011 select DISTINCT $tabela3.ID_EVENTOS_EMP, $tabela3.IDCODIGO_EVENTOS_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.ID_PRODUTOS_EMP, $tabela5.CODIGOID_PRODUTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP, $tabela12.ID_CONTRATO_EMP, $tabela12.CODIGOID_CONTRATO_EMP, $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela27.CODIGOID_USERS_USERS_ASSINATURAS, $tabela27.CODIGOID_EMP_USERS_ASSINATURAS from $tabela27 inner join $tabela12 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela12.CODIGOID_CONTRATO_EMP inner join $tabela3 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela3.IDCODIGO_EVENTOS_EMP inner join $tabela5 on $tabela27.CODIGOID_EMP_USERS_ASSINATURAS = $tabela5.CODIGOID_PRODUTOS_EMP where $tabela27.CODIGOID_USERS_USERS_ASSINATURAS = '".$id_user."' && $tabela12.ATIVO_CONTRATO_EMP = 'S' ORDER BY $tabela12.DATACADASTRO_CONTRATO_EMP, $tabela3.DATACADASTRO_EVENTOS_EMP, $tabela5.DATACADASTRO_PRODUTOS_EMP DESC Não entendi, porque está usando $tabela3.campo_que_quer_pegar na tabela ? não seria mais fácil colocar tabela3.campo_que_quer_pergar, no meu ponto de vista variaveis do php não funcionam bem junto com sql server se quer unir strings tem que usar "alguma coisa ".$variavel." alguma coisa" olha eu vou montar as tabelas e ver o que está acontecendo ok amanhã ou depois de amanhã eu retorno com algum resultado. Até + Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Dezembro 27, 2011 ola Daniel1, retirei as variaveis e coloquei os nomes das tabelas, como você disse: mas o resultado foi o msm. vou aguardar seus resultados, ok .... obrigado t+ Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Janeiro 5, 2012 eai Daniel1 esta dificil ? eu ja ñ sei oq fazer, se alguém tiver alguma sugestão por favor me ajude.... t+ Compartilhar este post Link para o post Compartilhar em outros sites