Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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)
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?
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"
puts, acho que to falando grego. Vo por imagens:
me explica isso: LIMIT 1 na primeira imagem não deveria me retornar o id 7?
/applications/core/interface/imageproxy/imageproxy.php?img=http://img197.imageshack.us/img197/5839/24486501.jpg&key=82df917c58c322b927c9eb9b393f8c0a6af23304414c5b137cbec256030d0ed4" alt="Imagem Postada" />
/applications/core/interface/imageproxy/imageproxy.php?img=http://img197.imageshack.us/img197/5663/66156813.jpg&key=fcae66d62d61846c8e614ee611c7d1f81ff0093b9592d5abf025ec564bd7375a" alt="Imagem Postada" />
to achando que é bug do mysql
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
?
@georgewar
Tu definiu esse campo id como chave primária mesmo? Se não definiu pode ser isso, eu acho.
1. qual versao do phpmyadmin ?
2. testou com outros gerenciadores ?
3. qual a versao so mysql ?
4. poste o schema da tabela
SELECT MAX( id ) , mod_downloads_cat_id
FROM gsite_mod_downloads_unit
WHERE mod_downloads_cat_id =1
>
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.
acho que o schema que você quer é isso:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img196.imageshack.us/img196/2644/81354261.png&key=d6ce529c6ae487c938d1fabcb6768fabc24aef5d8e1ca7248aaa604df4997f9e" alt="Imagem Postada" />
/applications/core/interface/imageproxy/imageproxy.php?img=http://img28.imageshack.us/img28/5479/54835974.png&key=11763ff4bd8c0135ee5fdd427bde88a4f9ac0080ae5ee7d655d548232d6e7bfe" alt="Imagem Postada" />
"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)
);>
>
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 ?
Isso ai deve ser o browser q ta dando hit no cache interno dele, tente sem ser pelo phpmyadmin q deve funcionar
>
>
>
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./applications/core/interface/imageproxy/imageproxy.php?img=http://img5.imageshack.us/img5/8748/18833939.jpg&key=66628428d53f16994fe039f2404667a2f42facb9215900fd6d77e58f74785f3f" alt="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=latin1tah, faz a query no shell tambem com o limit 0,30 pra ver se começa do 7 como deveria ser
por via das duvidas faça um "REPAIR TABLE"
poste as outras tabelas vinculadas, pois há chaves dependentes
veja tb as dicas do giesta
lembrei de algo simples...
esse problema ocorre em outras tabelas ?
experimentou criar um tabela nova, bem simples, somente para teste ?
>
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!
EXPLAIN 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
e cola o resultado aqui
/applications/core/interface/imageproxy/imageproxy.php?img=http://img28.imageshack.us/img28/3877/wwwadufuorgbrmysqladufu.png&key=275d6f183cc3a1e3fea394922a54dc71a1261c8fe15feb50799fe46b289dbdab" alt="Imagem Postada" />
hummmmm....
com essa sua dica acho que descobri o problema, MAS NÃO A SOLUÇÃO
ele ta ordenando pela minha FK1.
Mas olhando meu create table minha key não teria que ser o id da tabela atual?
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
olha que tosco quando eu coloco LIMIT 0,30. Ele simplesmente muda a key de referência!
/applications/core/interface/imageproxy/imageproxy.php?img=http://img12.imageshack.us/img12/3877/wwwadufuorgbrmysqladufu.png&key=486e14613f7af5c2d0e84d84d38037217c1ff297e25d95ceb4daa527f8ff777b" alt="Imagem Postada" />
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??