SQL: AVEC la clause de paramètres?
Dans Oracle SQL Developer, je suis l'aide d'une clause, dans ce (simplifié):
WITH
foos AS
SELECT *
FROM my_table
WHERE field = 'foo'
bars AS
SELECT *
FROM my_table
WHERE field = 'bar'
SELECT *
FROM foo
INNER JOIN bar
ON foo.id = bar.id
Je voudrais être en mesure de prendre les " foo " et " bar " les chaînes, afin que je puisse avoir quelque chose comme:
WITH
subq(my_arg) AS
SELECT *
FROM my_table
WHERE field = my_arg
SELECT *
FROM subq('foo')
INNER JOIN subq('bar')
ON subq('foo').id = subq('foo').id
Parce que, foos
et bars
sont en réalité beaucoup plus grand que cela, et il y a des noix de seulement deux d'entre eux, de sorte qu'il devient un peu difficile à maintenir.
Je sais que cela peut ne pas être possible avec une clause, mais quelle serait la meilleure solution pour éviter d'écrire à la sous-requête plusieurs fois? Cela peut être fait assez simple, mais je suis tout à fait nouveau pour SQL...
Merci pour votre aide.
OriginalL'auteur Catherine Gasnier | 2014-10-09
Vous devez vous connecter pour publier un commentaire.
Il semble que ce peut être ce que vous voulez:
Si la clause est de faire beaucoup (et vaut ne pas répéter):
OriginalL'auteur Bohemian
Essayez ceci:
Ou vous pouvez utiliser en pipeline fonction comme ceci:
OriginalL'auteur zaratustra
Vous pouvez réutiliser un AVEC l'expression dans la suivante. Mais comme je sais que vous ne pouvez pas paramétrer. Donc peut-être que cela pourrait aider:
OriginalL'auteur borjab