Requete sql, de mssql à oracle

j’ai la requete suivante qui marche sous mssql:

et je dois la faire marcher sous oracle.
Je change donc le + par des ||, ce qui donne:

Mais je prend un erreur ORA-00923 (FROM keyword not found where expected).
Une idée pour fixer ca?

description des tables:

fapf0 (table companies)

  • fa0001 (clé companie)
  • fa0030
  • fa0032
  • fa0241

locations (table des pays bossant sur l’appli)

  • location

  • locationNr

  • CountryLocationMapping

  • CustomerNumber (-> fapf0.fa0001)

  • LocationNumber (-> locations.locationNr)

  • country

c'était simple.

c’était simple.

Je ne voudrais me faire le gardien de l’orthodoxie SQL mais c’est un peu une horreur ta requête.

On n’évites au maximum de faire des SELECT dans la clause SELECT:

SELECT T.* (SELECT * FROM T1 WHERE T1.a=T.a) , (SELECT * FROM T2 WHERE T2.b=T.B ) FROM T -->argl !

On fait
SELECT T.,T1.,T2.*
FROM T
WHERE T1.a=T.a and T2.b=T.b

ou mieux:
SELECT T.,T1.,T2.*
FROM T inner join T1
on T1.a=T.a
inner join T2
on T2.b=T.b

Les sous SELECT c’est pour les IN, les EXISTS ou même pour créer une pseudo table dans la clause FROM. Mais jamais dans la clause SELECT, sauf exceptionnellement pour recréer une constante, mais pas pour faire une jointure !

Ce n’est pas de moi, j’ai juste à faire l’adaptation pour oracle (mais je sais, c’est pas du joli).