Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

georgewar

alguem me explica isso? LIMIT 1

Recommended Posts

veja esta query:

SELECT id, mod_downloads_cat_id, titulo, descricao, img_principal FROM gsite_mod_downloads_unit WHERE mod_downloads_cat_id = 1 ORDER BY id DESC LIMIT 1

me retorna o id 1 (não é o que eu quero)

 

SELECT id, mod_downloads_cat_id, titulo, descricao, img_principal FROM gsite_mod_downloads_unit WHERE mod_downloads_cat_id = 1 ORDER BY id DESC

7

6

5

...

1

 

*Apenas retirei o "LIMIT 1": me retorna do jeito que eu quero so que todos os registros, quero so um (o de id = 7)!!!!!

 

Pergunta, porque quando eu coloco o "LIMIT 1" ele não ordena em ordem decrescente?

o campo ID é INT(11)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara seguinte, eu acho que esta certo.. você deve estar se confundindo ai não ?

 

isso daqui

SELECT id, mod_downloads_cat_id, titulo, descricao, img_principal FROM gsite_mod_downloads_unit WHERE mod_downloads_cat_id = 1 ORDER BY id DESC LIMIT 1

Ele irá mostrar UM ÚNICO REGISTRO

 

Repare que quando você tirou o LIMIT 1 ele trouxe mais registros.

 

Não seria isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, você não entendeu.

 

eu quero apenas o ultimo registro. Para isso estou usando ORDER BY id DESC LIMIT 1

 

so que quando coloco o LIMIT 1 ele me retorna o primeiro ID em vez do ultimo!

 

outra coisa que acabei de ver:

 

SELECT id, mod_downloads_cat_id FROM gsite_mod_downloads_unit WHERE mod_downloads_cat_id = 1 ORDER BY id DESC LIMIT 1

se eu pesquisar apenas por id e mod_downloads_cat_id funciona! Mas isso não tem nada haver tem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

LIMIT, obviamente limita quantos registros serão retornados. Se você pôs 1, somente um registro será retornado.

 

Se você tirou o LIMIT e funcionou, mas você quer apenas o ID 7, utilize uma cláusula WHERE, tal queal você fez com mod_downloads_cat_id.

 

Se você não pode tirar esse WHERE que negrite, use um um condicional AND, para adicionar "míltiplos WHERE's"

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você tiver rodando isso no windows pode ser um bug sim

uhahuahuahuahu

 

tah muito estranho, era pra funcionar com o LIMIT 1

 

você já tentou

 

LIMIT 0,1

 

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@georgewar

Tu definiu esse campo id como chave primária mesmo? Se não definiu pode ser isso, eu acho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. qual versao do phpmyadmin ?

 

2. testou com outros gerenciadores ?

 

3. qual a versao so mysql ?

 

4. poste o schema da tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT MAX( id ) , mod_downloads_cat_id

FROM gsite_mod_downloads_unit

WHERE mod_downloads_cat_id =1

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você tiver rodando isso no windows pode ser um bug sim

uhahuahuahuahu

 

tah muito estranho, era pra funcionar com o LIMIT 1

 

você já tentou

 

LIMIT 0,1

 

?

 

estou rodando em servidor linux dreamhost!

já tentei limit 0,1

limit 0,2

limit 0,3

 

so funciona corretamento com o limit que corresponde a todos os itens da tabela. É como ele precisasse ver todos os rows para depois organizar...

 

 

@georgewar

Tu definiu esse campo id como chave primária mesmo? Se não definiu pode ser isso, eu acho.

 

está definida como chave primária tabela innodb

 

 

1. qual versao do phpmyadmin ?

 

2. testou com outros gerenciadores ?

 

3. qual a versao so mysql ?

 

4. poste o schema da tabela

 

o phpmyadmin é o "phpMyAdmin - 2.11.9.4". Mas isso dá na linha de comando tb, então é o DB.

mysql é o "MySQL: 5.0.32"

o schema que possui é uma tabela com uma porrada de dados. Pode me explicar melhor?

 

 

SELECT MAX( id ) , mod_downloads_cat_id
FROM gsite_mod_downloads_unit 
WHERE mod_downloads_cat_id =1
MAX( id ) retorna o maior normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

"schema da tabela" -> "estrutura da tabela"

 

 

exemplo:

 

CREATE TABLE IF NOT EXISTS foo (
  bar int(3) NOT NULL auto_increment,
  lorem tinyint(2) unsigned NOT NULL ,
  PRIMARY KEY (bar),
  UNIQUE KEY bar(bar),
  KEY bar_2 (bar)
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

SELECT MAX( id ) , mod_downloads_cat_id
FROM gsite_mod_downloads_unit 
WHERE mod_downloads_cat_id =1
MAX( id ) retorna o maior normalmente.

 

Então, qual a dúvida? Não te resolve usar a query na forma que sugeri ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

SELECT MAX( id ) , mod_downloads_cat_id
FROM gsite_mod_downloads_unit 
WHERE mod_downloads_cat_id =1
MAX( id ) retorna o maior normalmente.

 

Então, qual a dúvida? Não te resolve usar a query na forma que sugeri ?

 

A questão não é fazer outra query para funcionar. Eu quero que a query acima funcione porque até onde eu sei ela não tem erros. E se tem quero saber onde estou errando...

 

 

Isso ai deve ser o browser q ta dando hit no cache interno dele, tente sem ser pelo phpmyadmin q deve funcionar

 

não é não porque no shell dá o mesmo erro.

Imagem Postada

 

ESTRUTURA:

CREATE TABLE gsite_mod_downloads_unit (
		  id INT NOT NULL AUTO_INCREMENT,
		  remetente INT UNSIGNED NOT NULL,
		  usuarios_id INT UNSIGNED NOT NULL,
		  mod_downloads_status_id INT UNSIGNED NOT NULL,
		  mod_downloads_cat_id INT UNSIGNED NOT NULL,
		  id_os TEXT NOT NULL,
		  titulo VARCHAR(100) NOT NULL,
		  descricao VARCHAR(255) NULL,
		  data_insercao DATETIME NOT NULL,
		  downloads INT UNSIGNED NOT NULL DEFAULT 0,
		  tamanho INT UNSIGNED NOT NULL DEFAULT 0,
		  modo INT UNSIGNED NOT NULL DEFAULT 0,
		  nome_arquivo VARCHAR(100) NULL,
		  url TEXT NULL,
		  nome_original VARCHAR(255) NULL,
		  imagens TEXT NULL,
		  img_principal VARCHAR(255) NULL,
		  PRIMARY KEY(id),
		  INDEX FK1(mod_downloads_cat_id),
		  INDEX FK2(mod_downloads_status_id),
		  INDEX FK3(usuarios_id),
		  FOREIGN KEY(mod_downloads_cat_id)
		    REFERENCES gsite_mod_downloads_cat(id)
		      ON DELETE CASCADE
		      ON UPDATE CASCADE,
		  FOREIGN KEY(mod_downloads_status_id)
		    REFERENCES gsite_mod_downloads_status(id)
		      ON DELETE CASCADE
		      ON UPDATE CASCADE,
		  FOREIGN KEY(usuarios_id)
		    REFERENCES gsite_mod_usuarios_usuarios(id)
		      ON DELETE CASCADE
		      ON UPDATE CASCADE,
		  FOREIGN KEY(remetente)
		    REFERENCES gsite_mod_usuarios_usuarios(id)
		      ON DELETE CASCADE
		      ON UPDATE CASCADE
		) ENGINE=InnoDB  DEFAULT CHARSET=latin1

Compartilhar este post


Link para o post
Compartilhar em outros sites

por via das duvidas faça um "REPAIR TABLE"

 

 

 

poste as outras tabelas vinculadas, pois há chaves dependentes

 

 

 

veja tb as dicas do giesta

Compartilhar este post


Link para o post
Compartilhar em outros sites

lembrei de algo simples...

 

esse problema ocorre em outras tabelas ?

 

experimentou criar um tabela nova, bem simples, somente para teste ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah, faz a query no shell tambem com o limit 0,30 pra ver se começa do 7 como deveria ser

 

usando um limit que seja maior que o numero de registros funciona.

Hoje a tabela tem 7 registros. Se eu usar LIMIT 0,7 pra cima funciona.

Se eu usar 0,6 pra baixo nao funciona

 

por via das duvidas faça um "REPAIR TABLE"

 

 

 

poste as outras tabelas vinculadas, pois há chaves dependentes

 

 

 

veja tb as dicas do giesta

 

REPAIR TABLE gsite_mod_downloads_unit

 

The storage engine for the table doesn't support repai
deve ser o INNOdb

 

lembrei de algo simples...

 

esse problema ocorre em outras tabelas ?

 

experimentou criar um tabela nova, bem simples, somente para teste ?

 

so dá isso com essa tabela.

Lembrem-se do que falei acima. Se eu selecionar apenas os campos "id, mod_downloads_cat_id" na mesma query com problema funciona!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.