New Job 0 Denunciar post Postado Novembro 20, 2012 Bom dia pessoal. Tenho a seguinte situação: Uma página que vai exibir resultados de duas consultas ao banco. Primeira consulta: $sql = "SELECT cod_evento FROM eventos LIMIT 4"; $result_sql = sql_exec($sql); while ( $row = mysql_fetch_assoc($result_sql) ) { ///Aqui monto a exibição } Na segunda consulta, gostaria de excluir o que já foi mostrado na primeira consulta $sql_dois = "SELECT cod_evento FROM eventos WHERE cod_evento NOT IN ("RESULTADOS DA PRIMEIRA CONSULTA") LIMIT 12"; Alguém tem alguma idéia de como posso montar isso? Compartilhar este post Link para o post Compartilhar em outros sites
jhrhp 15 Denunciar post Postado Novembro 20, 2012 Na verdade você não precisa usar not in. Se a ordenação nas duas consultas for sempre a mesma você pode começar a segunda consulta diretamente da onde a primeira parou especificando no limit, a segunda consulta fica assim: $sql_dois = "SELECT cod_evento FROM eventos WHERE cod_evento LIMIT 4, 12"; Nessa SQL ele vai começar pegar a partir do 4 elemento os próximos 12. Ou usando o not in você pode fazer uma variável receber os IDs e concatenar na segunda SQL, assim: $ids = ""; $sql = "SELECT cod_evento FROM eventos LIMIT 4"; $result_sql = sql_exec($sql); while ( $row = mysql_fetch_assoc($result_sql) ) { $ids .= $row['cod_evento'] . ','; } E na segunda SQL: if(strlen($ids)) $ids = substr($ids, 0, strlen($ids) - 1); // remove a ultima virgula $sql_dois = "SELECT cod_evento FROM eventos WHERE cod_evento NOT IN ($ids) LIMIT 12"; Até mais. Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Novembro 20, 2012 Uma pergunta, os dados são sequenciais ou aleatórios..? Se for sequenciais, vai usando o LIMIT, crie duas variáveis.. $inicio, $fim.. E com um simples jogo de adição e subtração, você resolve seu problema. Abraço, traga seu retorno. Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Novembro 20, 2012 Na verdade você não precisa usar not in. Se a ordenação nas duas consultas for sempre a mesma você pode começar a segunda consulta diretamente da onde a primeira parou especificando no limit, a segunda consulta fica assim: $sql_dois = "SELECT cod_evento FROM eventos WHERE cod_evento LIMIT 4, 12"; Nessa SQL ele vai começar pegar a partir do 4 elemento os próximos 12. Ou usando o not in você pode fazer uma variável receber os IDs e concatenar na segunda SQL, assim: $ids = ""; $sql = "SELECT cod_evento FROM eventos LIMIT 4"; $result_sql = sql_exec($sql); while ( $row = mysql_fetch_assoc($result_sql) ) { $ids .= $row['cod_evento'] . ','; } E na segunda SQL: if(strlen($ids)) $ids = substr($ids, 0, strlen($ids) - 1); // remove a ultima virgula $sql_dois = "SELECT cod_evento FROM eventos WHERE cod_evento NOT IN ($ids) LIMIT 12"; Até mais. PERFEITO!!! fiz com o NOT IN, pois a consulta era um pouco mais complexa do que coloquei ali, e funcionou perfeitamente! Muito obrigado! Uma pergunta, os dados são sequenciais ou aleatórios..? Se for sequenciais, vai usando o LIMIT, crie duas variáveis.. $inicio, $fim.. E com um simples jogo de adição e subtração, você resolve seu problema. Abraço, traga seu retorno. Obrigado pela dica "leomarriel", porém como a consulta era um pouco mais complexa, fiz com a dica do "jhrhp" usando o NOT IN. Valeu mesmo! Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Novembro 20, 2012 Show.. abraço. Compartilhar este post Link para o post Compartilhar em outros sites