Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola Pessoal
To precisando de uma Luz Aqui.
Queria fazer uma consulta no Mysql para usuários agendados e não agendados
Vou explicar Tenho duas Tabelas
-user
id_user(int)
nome(var)
tel(var)
etc.......
-agenda
id_agenda(int)
id_user2(int)
start(datetime)
Meu select esta assim
$data = '2014-11-18';
$sql = "SELECT user.*, agenda.* FROM user,agenda WHERE user.id_user = agenda.id_user2 AND start '$data' ";
$resultado = mysql_query($sql) or die( mysql_error());
while ($linha = mysql_fetch_assoc($resultado)) {
$id = $linha["id_agenda"];
$id_user2 = $linha["id_user2"];
$id_user = $linha["id_user"];
$nome = $linha["name"];
$start = $linha["start"];
$tel = $linha["tel"];
echo '$nome';// Nome de usuários Agendados // Até aqui OK
//////////////////////////////////////////////////
echo '$nome';// Nome de usuários não Agendados (essa é a questão)
/////////////////////////////////////////////////
}
Dessa Forma Ele me retorna os Usuários que estão na agenda na Data em questão ($data)
Então ele me lista exe......3 usuários agendados
Fabio Henrique 2014-11-18 2737-2254
Antonio Carlos 2014-11-18 7235-2254
Mariana Moura 2014-11-18 2732-2254
-Então eu Queria que ele me retomasse o resto dos usuários que não estão na agenda na data em questão
Basicamente é Mostrar os Usuários que estão Agendados e os que Não estão Agendados para tal Data
Desde já agradeço a Todos
Ola Diogo
Obrigado pela sugestão
mais Ja tentei isso. na segunda consulta como existe essa clausula where "user.id_user = agenda.id_user2" , não me retorna nada por que ele ainda esta comparando se existe um id_user igual
... ou um sql com outer join tratando o campo nulo agenda.idagenda para os não agendados.
Mas a solução doDiogo Libana me parece mais lógica
============================
... mas o que seria os "não agendados" ?
Para os não agendados:
$sql = "SELECT user.* FROM user JOIN agenda on user.id_user != agenda.id_user2 AND agenda.start = '$data'";
Fiz um select "similar" aqui e funcionou bem. Acredito que isso resolva e liste exatamente os usuários não agendados para a data selecionada.Show Diogo
Funcionou Perfeitamente Era isso mesmo
Obrigado
Opa! Bacana Fábio. Feliz por ter sido útil. ;-)
Diogo Ta acontecendo algo estranho aqui
esta repetindo os IDs dos usuários não agendados de acordo com o numero de agendados
Olha como me retorna.
3 Agendados...id --> 21 49 25
12 Nao Agendados....--> 115 115 115 21 21 25 25 23 23 23 26 26 26 32 32 32 49 49 35 35 35 44 44 44 43 43 43 48 48 48 65 65 65
o script ta como vc fez não alterei nada
Oque deve ser?
Fábio. Estou no celular agora e não tenho como testar outra vez,mas aqui tinha rodado sem duplicar. De qualquer forma acrescente um "distinct" em frente ao select (neste caso é melhor indicar os campos que você quer)
Show Diogo
O "distinct" resolveu o problema.... Valeu mesmo....
Obrigado
Porque não fazer duas consultas, uma para casa caso?
Para os usuarios agendados para a data:
Para os não agendados: