biza 1 Denunciar post Postado Março 6, 2015 Viva pessoal, Estou com problemas na seguinte query em mysql: "SELECT id_comodidade, comodidade, IF(id_comodidade IN (SELECT comodidade_id FROM tbl_deta_pro_como WHERE produto_id = {$_GET['id']}),'checked','') AS marcada FROM tbl_comodidade WHERE detalhe_como_id='$row1[0]' ORDER BY comodidade ASC" alem do campo "comodidade" eu gostaria de ter acesso ao campo "id_detalheProc", como poderei fazer isso? as minhas tabelas são: #tbl_comodidade id_comodidade comodidade detalhe_como_id #tbl_deta_pro_como id_detalheProc produto_id comodidade_id data_last_inser Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Março 6, 2015 Não entendi, pode ser mais específico? Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Março 6, 2015 esse consulta Em cima esta mostrando todos os campos comodidade como marcado alem desse campo quero mostrar o campo id_detalheProc pode-me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Março 9, 2015 Veja mais sobre JOIN, este link permite a tradução, mas não é bom traduzir, por exemplo, JOIN passa a ser JUNTA, e o comando JUNTA não funciona no MySQL. SELECT c.id_comodidade, c.comodidade, c.detalhe_como_id, d.id_detalheProc, d.produto_id, d.comodidade_id, d.data_last_inser, IF( produto_id = {$_GET['id']}, 'checked', NULL ) AS marcada # ALIAS marcada (apelido) FROM tbl_comodidade AS c # ALIAS c (apelido) LEFT JOIN tbl_deta_pro_como AS d # ALIAS d (apelido) ON d.comodidade_id = c.comodidade_id WHERE detalhe_como_id='$row1[0]' ORDER BY comodidade ASC Com o JOIN você tem acesso a todos os campos da outra tabela, desde que tenha uma referência válida. OBS: O ideal é que os campos sejam do mesmo TIPO, ou seja, INT = INT, SMALLINT UNSIGNED = SMALLINT UNSIGNED e não INT = SMALLINT (pode funcionar, mas em algum momento vai dar erro) Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Março 12, 2015 Ok lokaodomau a resoluçao que voce me apresentou esta correcta no entanto voce Veja que se preencher dados na tablela a resoluçao não Fica identica a minha, a minha query esta fazendo o certo Neal eu so queria adicionar a coluna id_detalheProc. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Março 13, 2015 Qual campo na tabela #tbl_comodidade tem o mesmo valor da tabela #tbl_deta_pro_como ? Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Março 13, 2015 OK, faz um teste com a função BENCHMARK(count, expr) para ver o desempenho: SELECT BENCHMARK(1000000, 'SELECT * FROM exemplo') /* Count: quantas vezes executar a consulta/expressão (1 milhão de vezes no exemplo) Expr: expressão, o que vai ser executado {count} vezes Obs: Substitua a SQL "SELECT * FROM exemplo" pela SQL que deseja testar */ O resultado será o tempo que demorou para executar todas as {count} vezes a expressão Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Março 13, 2015 Id_comodidade=comodidade_id respectivamente. Locaodomau compreendo que esta tentAndo fazer mas a minha consulta sera sempre pequena de campos reduzidos no Maximo 30 itens sempre' dai nao estar muito preocupado com performance mas combos doi typos de id's o I'd principal da tabela #tbl_deta_pro_como (id_detalheProc) Que é o que me vai permitir apagar, editar e o valor comodidade_id que me vai permiir saber da consulta qual a checkbox que se encontra checkada Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Março 13, 2015 Desculpe pela falta de comprometimento, não me esforcei o suficiente. Veja se agora resolve: SELECT c.id_comodidade, c.comodidade, c.detalhe_como_id, d.id_detalheProc, d.produto_id, d.comodidade_id, d.data_last_inser, IF( COUNT(d.id_detalheProc) > 0, 'checked', NULL ) AS marcada # ALIAS marcada (apelido) FROM tbl_comodidade AS c # ALIAS c (apelido) LEFT JOIN tbl_deta_pro_como AS d # ALIAS d (apelido) ON d.comodidade_id = c.comodidade_id AND d.produto_id = {$_GET['id']} WHERE detalhe_como_id='$row1[0]' GROUP BY c.id_comodidade, d.id_detalheProc # GROUP BY para que não repita a comodidade, exceto quando houver mais de 1 id_detalheProc ORDER BY comodidade ASC Além de validar o `id_comodidade` deveria validar também se é o produto recebido, certo? Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Março 14, 2015 Lokaodomau, Obrigado pela sua ajuda, meu amigo não ouve falta de comprometimento nenhum, pois você não se comprometeu comigo, agradeço-lhe muito a sua ajuda contudo não estamos a conseguir mostrar o id_detalheProc, a ideia era ter duas colunas com os respectivos id's (comodidade_id|id_detalheProc). Em baixo segue a imagem de como esta a ser visualizado. Compartilhar este post Link para o post Compartilhar em outros sites
WictorP 9 Denunciar post Postado Março 14, 2015 SELECT * FROM comodidade.como, data_pro_como.datacomo WHERE como.comodidade_id='1' AND datacomo.comodidade_id=como.id_comodidade GROUP BY datacomo.comodidade_id... Assim você interage de uma forma mais simples, creio eu... Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Março 28, 2015 Meu amigo WictorP, A ideia que eu tenho nessa consulta é como eu menciono acima, consultar o "id_comodidade", trazendo também o "id_detalheProc" (este último necessito mesmo dele porque preciso de saber na tabela relacional qual o id da linha incrementada), no primeiro post que eu fiz a consulta esta trabalhando bem e é na realidade o que preciso, mas gostava de adicionar a ela o "id_detalheProc" coisa que não estou conseguindo fazer. Compartilhar este post Link para o post Compartilhar em outros sites