Jump to content
Fórum Script Brasil
  • 0

Consulta SQL


joomlur

Question

Pessoal,

Eu trabalho com Joomla CMS, e estou precisando extrair um relatórios de acesso dos usuário.

A ferramenta não possuí um recurso que me forneça isso.

Então quero fazer uma consulta sql que me retorne, o nome do usuário, Login, grupo ao qual pertence, data do acesso e se possível, quantas vezes acessou.

Estou fazendo a seguinte consulta

SELECT name, username, title, lastvisitDate

FROM joomla_users

INNER JOIN joomla_usergroups

ON lastvisitDate = lastvisitDate

Estaria correta?

Está me retornando de uma forma esquisita.

Tenho uns 20 grupos de usuários, tipo, administração, financeiro..etc

Quanto ele me retorna a consulta, cada usuário, aparece diversas vezes, em todos os grupos, mas não está correto, cada usuário tem que aparecer relacionado no grupo ao qual ele foi adicionado.

Por exemplo:

Usuário, Login, Grupo, último acesso

Carlos, c2125, financeiro, 05/05/2012

Está aparecendo assim:

Carlos, c2125, financeiro, 05/05/2012

Carlos, c2125, adm, 05/05/2012

Carlos, c2125, logistica, 05/05/2012

Carlos, c2125, marketing, 05/05/2012

Eu não cadastrei esse usuário nesses grupos.

O que devo fazer para me retornar corretamente os acessos?

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

O correto qui é atribuit o nome da tabel ou um apelido antes da comparação realizada pela cláusula ON do INNER JOIN.

Assim sendo, teste isto:

SELECT name, username, title, lastvisitDate
FROM joomla_users u
INNER JOIN joomla_usergroups g
ON g.lastvisitDate = u.lastvisitDate

Quando usamos INNER JOIN ou LEFT JOIN ou RIGHT JOIN devemos colocar a comparação, com os atributos que realizam a junção das tabelas, na clausula ON e não na cláusula WHERE.

Deixe a cláusula WHERE somente para os outros filtros que você desejar.

Não é errado a forma como foi colocado pelo Jhonas no post anterior. O código fica mais limpo e funcional fazendo da forma como relato acima.

Link to comment
Share on other sites

  • 0

.

Pelo que me parece, o relacionamento entre as duas tabelas na cláusula ON está incorreto.

Por isso ele traria os registros bagunçados desta forma.

Primeiro: Você deve colocar o nome da tabela na frente do nome do campo

Ex:

SELECT name, username, title, lastvisitDate

FROM joomla_users

INNER JOIN joomla_usergroups

ON joomla_usergroups.lastvisitDate = joomla_users.lastvisitDate <<--

E segundo, quais os campos que as duas tabelas tem em comum uma com a outra???

Apenas o "lastvisitDate" ou tem mais??

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...