Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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.
>
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!
Show.. abraço.
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:
while ( $row = mysql_fetch_assoc($result_sql) ) {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.