aletres 0 Denunciar post Postado Novembro 12, 2008 Tenho duas tabelas: cam (campeonatos) cal (calendário) Então tenho um calendário e cada data diz de qual campeonato pertence. Acontece que alguns calendários não tem campeonato cadastrado pois não será feita por nós. SELECT * FROM cal LEFT JOIN cam ON cam.cam_id = cal.cal_cam_id WHERE cam_ano = '.$ano_atual.' ORDER BY cam_tipo,cal_data ASC O código acima retorna apenas os calendários que tem o cal_cam_id diferente de 0. Como digo ao MySQL para retornar todas as linhas, incluindo quando não achar o cal_cam_id na tabela cam? Obrigado desde já. Alexandre. Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Ribeiro 1 Denunciar post Postado Novembro 13, 2008 Alexandre, Use o LEFT OUTER JOIN LEFT OUTER JOIN cam ON cam.cam_id = cal.cal_cam_id Abraços Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Novembro 13, 2008 Mesmo com a sua dica não consegui resolver o problema e resolvi ir tirando partes do código até chegar ao modo mais simples. Cheguei a conclusão de que retirando a parte do código AND cam_ano = '.$ano_atual.' ele funcionava. SELECT * FROM cal LEFT OUTER JOIN cam ON cam.cam_id = cal.cal_cam_id WHERE cal_data >= "'.$data_atual_completa.'" AND cal_data < "'.$dia_mais.'" AND cam_ano = '.$ano_atual.' ORDER BY cam_tipo,cal_data ASC Alguém sabe o porque o LEFT OUTER JOIN não funciona com um WHERE da segunda tabela? Valeu Guilherme. Alexandre. www.fullblog.com.br Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Ribeiro 1 Denunciar post Postado Novembro 13, 2008 Não uso muito o outer join no mysql. Mas tenta inverter os campos do join SELECT * FROM cal LEFT OUTER JOIN cam ON cal.cal_cam_id = cam.cam_id WHERE cal_data >= "'.$data_atual_completa.'" AND cal_data < "'.$dia_mais.'" AND cam_ano = '.$ano_atual.' ORDER BY cam_tipo,cal_data ASC O lado que o atributo fica define qual tabela que ele vai retornar se não tiver registro. Isto pelo menos no outer join do oracle é assim. Teste, se der certo, bom também.. Compartilhar este post Link para o post Compartilhar em outros sites