problema com delete e where
Moderador: Moderadores
-
mmarcondes
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 02 Jul 2021 15:06
- Localização: witmarsum
problema com delete e where
bom dia amigos, final de semana iniciei meus estudos com mysql, consegui incluir, alterar, etc, mas quando fui deletar deu erro, passei o domingo olhando e não consegui entender a mensagem de erro.
na minha tabela itens, tem um campo onde eu mesclo letras e números ( referencia varchar(30) ), ele fica mais ou menos assim o conteúdo : gspx4857214104
fiz um teste tentando apagar um registro com base nele : delete from itens_pedidos where referencia = gspx4857214104, no fonte ficou assim :
pesquisa := AllTrim(v_ref)
cQuery_del := "delete from itens_pedidos where referencia = "+pesquisa
oQuery_del := oMySQL:query( cQuery_del )
if oQuery_del:neterr()
Alert(oQuery_del:error())
return( nil )
endif
o erro apresentado foi :
unknown column "gspx4857214104" in where clause
agradeço qualquer ajuda, obrigado.
na minha tabela itens, tem um campo onde eu mesclo letras e números ( referencia varchar(30) ), ele fica mais ou menos assim o conteúdo : gspx4857214104
fiz um teste tentando apagar um registro com base nele : delete from itens_pedidos where referencia = gspx4857214104, no fonte ficou assim :
pesquisa := AllTrim(v_ref)
cQuery_del := "delete from itens_pedidos where referencia = "+pesquisa
oQuery_del := oMySQL:query( cQuery_del )
if oQuery_del:neterr()
Alert(oQuery_del:error())
return( nil )
endif
o erro apresentado foi :
unknown column "gspx4857214104" in where clause
agradeço qualquer ajuda, obrigado.
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
problema com delete e where
use a chave única da tabela para deletar , ficou meio estranho o seu delete
DELETE FROM regrastributarias WHERE Regra_id ='" + STRZERO(::nRegra_Id,11,0) + "'"
DELETE FROM regrastributarias WHERE Regra_id ='" + STRZERO(::nRegra_Id,11,0) + "'"
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
mmarcondes
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 02 Jul 2021 15:06
- Localização: witmarsum
problema com delete e where
eu li sobre isso, mas fiquei curioso, pq passei anos usando dbf e tudo dava certo, pq o mysql não entende algo tão simples ?
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
problema com delete e where
Olá!
O conteúdo de campos não numéricos, incluido dates, tem que estar entre aspas simples:
O conteúdo de campos não numéricos, incluido dates, tem que estar entre aspas simples:
Código: Selecionar todos
delete from itens_pedidos where referencia = 'gspx4857214104'[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
problema com delete e where
E quem disse que o DBF aceitaria isso?mmarcondes escreveu:eu li sobre isso, mas fiquei curioso, pq passei anos usando dbf e tudo dava certo, pq o mysql não entende algo tão simples ?
Código: Selecionar todos
cCmd := "NOME=" + pesquisa
DELETE FOR &( cCmd )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
mmarcondes
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 02 Jul 2021 15:06
- Localização: witmarsum
problema com delete e where
agora deu certo e entendi o pq, tem que ter aspas simples antes e depois.
obrigado alxsts !!
obrigado alxsts !!
-
mmarcondes
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 02 Jul 2021 15:06
- Localização: witmarsum
problema com delete e where
José, eu entendi a lógica do teu teste, realmente, se não tiver o campo não tem como, seja em qual linguagem ou banco de dados for, na minha humilde opinião isso é muito primário, e como eu havia dito, eu já tinha me certificado disso, passei o dia todo repetindo a rotina sem entender o erro, mas com a ajuda do amigo alxsts eu entendi algo que tinha lido ontem, que para o mysql tudo é texto, independente se for numero, data e string, e é aqui o problema de quem estava acostumado só com dbf, no mysql vc precisa colocar uma string dentro de aspas simples para que seja entendido como tal, senão o mysql vai entender que aquilo é outra coisa e vai dar erro mesmo !
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
problema com delete e where
Olá!
Não, isto não é verdade. Veja:mmarcondes escreveu:para o mysql tudo é texto, independente se for numero, data e string,
Código: Selecionar todos
-- deletar um pedido identificado por um campo numérico (idPedido 5964)
DELETE FROM tbOrder WHERE idOrder = 5964 -- campo numérico não precisa de aspas
-- deletar os pedidos de uma data
DELETE FROM tbOrder WHERE dtOrder >= '2021-09-30' AND dtOrder <= '2021-09-30' -- campo data precisa de aspas
-- deletar os itens de um pedido específico com itens com código alfanumérico
DELETE FROM tbOrder WHERE idOrder = 5964 AND idProd = '21RBS' -- campo alfanumérico precisa de aspas
-- deletar os pedidos cancelados -> fgCancel é uma coluna do tipo boolean
DELETE FROM tbOrder WHERE fgCancel = TRUE -- campo boolean não precisa de aspas[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
problema com delete e where
Em DBF:mmarcondes escreveu:e é aqui o problema de quem estava acostumado só com dbf, no mysql vc precisa colocar uma string dentro de aspas simples para que seja entendido como tal, senão o mysql vai entender que aquilo é outra coisa e vai dar erro mesmo
Código: Selecionar todos
DELETE FOR NOME = "JOSE"
Uma coisa é usar uma variável pré-definida no APLICATIVO, onde o aplicativo faz tudo.
Outra coisa é passar o comando para o servidor, que desconhece qualquer variável do aplicativo.
Se usar o mesmo conceito com DBF, vai remover muitas limitações que existem hoje no Clipper/Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
problema com delete e where
Só exemplo disso, que acaba tornando tudo igual.JoséQuintas escreveu:Se usar o mesmo conceito com DBF, vai remover muitas limitações que existem hoje no Clipper/Harbour.
O mais comum é usar no DBF:
Código: Selecionar todos
cNome := "JOSE"
SET FILTER TO NOME = cNome
SET FILTER TO NOME="&cNome"
Código: Selecionar todos
cNome := "JOSE"
cFilter := [NOME = "] + cNome + ["]
SET FILTER TO &cFilter
Nenhum erro por variável não existir depois.
Assim fica visível que DBF ou SQL, a indicação de string precisa das aspas.
Não depender de variáveis é obrigatório para comandos SQL, mas pode ajudar muito no DBF/aplicativo também.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/