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: 783
- 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 B7, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart, Python + FASTAPI , Android Kotlin
-
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: 3107
- 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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 3107
- 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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/