Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Em Sql


DackAle

Pergunta

E aí galera

Seguinte, estou criando um menu, aonde quero que liste as categorias no banco de dados, até ai facil... mas existe uma tabela que tem dados de lojistas, entre eles a qual categoria pertecente... e gostaria de quando mostrar a categoria, mostrar quandas lojas estão naquela categoria, exemplo

Auto-Escola (5)

Informatica (0)

Perfumaria (2)

Com 2 SQLs é facil, mando pegar a categoria, dentro deste looping, crio outra SQL pra contar, mas queria fazer tudo em UMA consulta só... tentei assim

SQL="SELECT tb_categorias.cod, tb_categorias.categoria, COUNT(tb_lojas_configuracoes_2.cod) AS TotalLojas FROM tb_categorias INNER JOIN tb_lojas_configuracoes_2 ON tb_categorias.cod = tb_lojas_configuracoes_2.categoria ORDER BY tb_categorias.categoria ASC"
Mas deu o seguinte erro
[MySQL][ODBC 3.51 Driver][mysqld-4.1.16-nt]Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause 

alguém poderia tentar me ajudar a fazer essa SQL funcionar ? rs

Porque é muito importante desempenho nesse site e to tentando deixar a coisa mais pratica e limpa possivel e isso com certeza é uma coisa que posso economizar, mas está foda de dar certo...rs :)

Valeu galera

Abração

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Fala galera

Tentei assim, mas só me retorna UMA categoria sendo que tenho 4 categorias cadastradas

SQL="SELECT tb_categorias.categoria, COUNT(tb_lojas_configuracoes_2.categoria) AS TotalLojas FROM tb_categorias INNER JOIN tb_lojas_configuracoes_2 ON tb_categorias.cod = tb_lojas_configuracoes_2.categoria GROUP BY tb_categorias.categoria ORDER BY tb_categorias.categoria ASC"

Ai Jesus :unsure:

Link para o comentário
Compartilhar em outros sites

  • 0

use LEFT JOIN:

SQL="SELECT tb_categorias.categoria, COUNT(tb_lojas_configuracoes_2.categoria) AS TotalLojas FROM tb_categorias LEFT JOIN tb_lojas_configuracoes_2 ON tb_categorias.cod = tb_lojas_configuracoes_2.categoria GROUP BY tb_categorias.categoria ORDER BY tb_categorias.categoria ASC"

se é que o mysql suporta.

Link para o comentário
Compartilhar em outros sites

  • 0

nunca vi isso em escola, apostila nada, então essa explicacao pode não estar 100% correta:

existem dois tipo de JOIN o INNER JOIN e o OUTER JOIN. o OUTER JOIN pode ser de tres tipos: LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN, ou pra simplificar LEFT JOIN, RIGHT JOIN ou FULL JOIN.

pra explicar fica mais facil com um exemplo. faz de conta que eu tenho essas duas tabelas:

Tabela X

Codigo Nome

-------------------

1 kuroi

2 dackale

3 xxxx

Tabela Y

Codigo Descricao

--------------------

1 a

4 b

5 c

O INNER JOIN seleciona apenas os registros em comum entre AS DUAS TABELAS.

exemplo:

Select * from X INNER JOIN Y ON X.Codigo = Y.Codigo
vai voltar:
X.Codigo   Nome      Y.Codigo   Descricao
------------------------------------------
1          kuroi     1          a[/code] agora o LEFT JOIN seleciona todos registro que estiverem na tabela da esquerda do JOIN, não importa se existem na segunda tabela ou não. Exemplo:
[code]Select * from X LEFT JOIN Y ON X.Codigo = Y.Codigo
vai voltar:
X.Codigo   Nome      Y.Codigo   Descricao
------------------------------------------
1          kuroi     1          a
2          dackale   - NULL -   - NULL -
3          xxxx      - NULL -   - NULL -
[/code] onde "- NULL -" signfica valor nulo. agora RIGHT JOIN é o contrário, ele seleciona todos os registros da tabela da direita:
[code]Select * from X RIGHT JOIN Y ON X.Codigo = Y.Codigo
vai voltar:
X.Codigo   Nome      Y.Codigo   Descricao
------------------------------------------
1          kuroi     1          a
- NULL -   - NULL -  4          b
- NULL -   - NULL -  5          C
[/code] note que
[code]Select X.Codigo, Nome, Y.Codigo, Descricao from X LEFT JOIN Y ON X.Codigo = Y.Codigo
é a mesma coisa que
Select X.Codigo, Nome, Y.Codigo, Descricao from Y RIGHT JOIN X ON X.Codigo = Y.Codigo
o FULL JOIN seleciona todos os registros de todas as tabelas. só que não sei se funciona em mysql. sei que em access não funciona, só consegui em SQL.
Select * from X FULL JOIN Y ON X.Codigo = Y.Codigo
vai voltar:
X.Codigo   Nome      Y.Codigo   Descricao
------------------------------------------
1          kuroi     1          a
2          dackale   - NULL -   - NULL -
3          xxxx      - NULL -   - NULL -
- NULL -   - NULL -  4          b
- NULL -   - NULL -  5          C
[/code]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...