GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEV
,
WEBDEV
e
WINDEV Mobile
Inicio
|
Mensagens recentes
|
Conecte-se...
|
Disconnect
|
Português
Inicio
→
WINDEV 2024
→
UPDATE FROM et différences entre MSSQL MicrosoftSL SQL Server et Hyperfile HFSQL
UPDATE FROM et différences entre MSSQL MicrosoftSL SQL Server et Hyperfile HFSQL
Iniciado por AlexisPERR, jul., 24 2024 6:45 PM - 3 respostas
Conecte-se…
AlexisPERR
#1
Membro registado
96 mensagems
Publicado em julho, 24 2024 - 6:45 PM
J'utilise extensivement l'objet Requête SQL
maReq
is
SQL Query
=
[
SELECT
NOM
FROM
CLIENT
WHERE
IDCLIENT = 3
]
et la plupart du temps le code est portable, entre les databases SQL Server et les bases Hyperfile.
Quelque cas cependant demandent une adaptation du code SQL, par exemple les mémo texte doivent être converti.
Ainsi, alors qu'en Hyperfile vous pouvez écrire
WHERE
C
LIENT.COMMENTAIRE
LIKE
'
casse bonbon
'
en SQL Server il faut utiliser SUBSTRING DATALENGTH sur les mémos texte :
WHERE
SUBSTRING
(
C
LIENT.COMMENTAIRE
,
1
,
DATALENGTH
(
C
LIENT.COMMENTAIRE
)
)
LIKE
'
casse bonbon
'
Une autre différence notable est le UPDATE FROM
En Hyperfile on peut faire
maReq
is
SQL Query
=
[
UPDATE
CLIENT
LEFT OUTER JOIN PAYS ON PAYS.IDPAYS = CLIENT.IDPAYS
SET
CLIENT.DONE = 1
WHERE
PAYS.IDPAYS = 33
]
en SQL Server
maReq
is
SQL Query
=
[
UPDATE
CLIENT
SET
CLIENT.DONE = 1
FROM
PAYS
WHERE
PAYS.IDPAYS = 33
AND
PAYS.IDPAYS = CLIENT.IDPAYS
]
Malheureusement, comme cette syntaxe est inconnue de WinDEV, il faut passer par HExecuteSQLQuery avec l'option hQueryWithoutCorrection
Mensagem modificada, julho, 24 2024 - 6:46 PM
Denunciar
0
0
Philippe SB
#2
Membro registado
2.646 mensagems
Popularité : +222 (260 votes)
Publicado em julho, 25 2024 - 8:05 AM
Bonjour,
Lorsque tu passes d'un SGBD à un autre, tu as toujours des différences. C'est vrai entre HFSQL et SQL Server, mais aussi entre SQL Server et PostgreSQL ou encore entre SQL Server et Oracle...
HFSQL respecte la norme SQL92. Aujourd'hui nous en sommes à SQL-2019 et la 2023 devrait voir le jour d'ici peu.
Au final si tu veux baser d'une base à une autre, tu ne peux pas avoir de requêtes identiques tout le temps. A toi de jongler entre les les différents systèmes.
En dehors de ceci, plusieurs choses :
1 - Ecrire ceci revient à écrire une égalité
WHERE CLIENT
.
COMMENTAIRE LIKE
'casse bonbon'
/
/
est identique à
WHERE CLIENT
.
COMMENTAIRE
=
'casse bonbon'
Si HFSQL arrive à te sortir quelque chose correspondant à un "LIKE '%casse bonbon%'", c'est qu'il y a un bug dans HFSQL.
2-
par exemple les mémo texte doivent être converti
En SQL Server, un "mémo texte" n'est ni plus ni moins qu'un varchar(max) (
https://learn.microsoft.com/fr-fr/sql/t-sql/data-types/char-and-varchar-transact-sql…
). Il n'a nul besoin d'être converti pour être utilisé avec un "LIKE". Par contre il te faut respecter un pattern cohérent comme ceci (
https://learn.microsoft.com/fr-fr/sql/t-sql/language-elements/like-transact-sql…
)
WHERE CLIENT
.
COMMENTAIRE LIKE
'%casse bonbon%'
3- Ecrire un "left outer join" avec une égalité dans le "where" revient à faire un "join"
maReq is SQL Query
=
[
UPDATE CLIENT
LEFT OUTER JOIN PAYS ON PAYS
.
IDPAYS
=
CLIENT
.
IDPAYS
SET CLIENT
.
DONE
=
1
WHERE PAYS
.
IDPAYS
=
33
]
/
/
est identique à
maReq is SQL Query
=
[
UPDATE CLIENT
JOIN PAYS ON PAYS
.
IDPAYS
=
CLIENT
.
IDPAYS
SET CLIENT
.
DONE
=
1
WHERE PAYS
.
IDPAYS
=
33
]
--
Cordialement,
Philippe SAINT-BERTIN
Denunciar
0
0
AlexisPERR
#3
Membro registado
96 mensagems
Publicado em julho, 25 2024 - 1:57 PM
Le problème du UPDATE FROM est qu'il est implémenté de façon diverse par les différents SGDB.
En effet il ne fait pas partie du SQL92
https://www.contrib.andrew.cmu.edu/%7Eshadow/sql/sql1992.txt
(page 391)
Ainsi chacun le fait à sa sauce
--SQL Server
UPDATE Table2
SET Table2
.
Sort
=
Table1
.
Sort
FROM Table2 t2
INNER JOIN Table1 t1 ON t1
.
id
=
t2
.
id_Table1
--PostgreSQL
UPDATE Table2 t2
SET t2
.
Sort
=
t1
.
Sort
FROM Table1 t1
WHERE t1
.
id
=
t2
.
id_Table1
--MySQL / MariaDB / Hyperfile
UPDATE Table2 t2
INNER JOIN Table1 t1 on t1
.
id
=
t2
.
id_Table1
SET t2
.
Sort
=
t1
.
Sort
WinDEV ne reconnaissant pas la syntaxe avec FROM, donne une erreur de compilation. Dommage.
Denunciar
0
0
Philippe SB
#4
Membro registado
2.646 mensagems
Popularité : +222 (260 votes)
Publicado em julho, 25 2024 - 2:22 PM
WinDEV ne reconnaissant pas la syntaxe avec FROM, donne une erreur de compilation. Dommage.
Et à mon avis, c'est pas près de changer
--
Cordialement,
Philippe SAINT-BERTIN
Denunciar
0
0
→ Voltar para WINDEV 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (versões anteriores)
WEBDEV (versões anteriores)
WINDEV Mobile (versões anteriores)
Reports & Queries
Off-topic
Ferramentas
Français
English
Español
Portuguesa
Fermer cette fenêtre
Tipo de Pesquisa
Apenas tópicos
Todas as mensagens
Período de pesquisa
Qualquer momento
Última hora
Últimas 24 horas
Semana passada
Mês passado
Ano passado
Cancelar
Pré-visualização da sua mensagem
Adicionar imagem
Importar uma imagem de uma URL
Enviar uma imagem a partir do seu disco
Deixe um ficheiro ou clique em "Procurar ..."
ou
Cancelar
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Texto