0
votes

La valeur de test existe et retourne booléen en conséquence

Je suis un peu nouveau à SQL et je me suis battu pour obtenir le résultat que je veux.

J'ai ces tables:

 3 tables

et mon objectif est de produire ceci:

sortie attendu

à des fins de traduction: emprunt == emprunté, livre == livre , Oeuvre == Collection

Donc, mon objectif est d'obtenir tous les livres ID (ID_LIVRE), leur nom de collection (Titre) et un booléen:
Vrai s'ils sont empruntés (id_livre in emprunt table)
Faux sinon

J'ai fait ceci: xxx

et obtenu cette sortie:

 sortie que j'ai jusqu'à présent

Donc, je suis proche de ce que je veux, je crois, mais je ne sais pas comment avoir un test de retour d'un booléen au lieu d'id_emprunt dans la 3ème colonne

Toute aide appréciée, merci.


4 commentaires

"PL / SQL" est une langue procédurale spécifique à Oracle RDBMS. Vous semblez utiliser SQL à Postgres.


Veuillez Ne postez pas de code comme des images Voir ici pour plus de détails pourquoi: meta.stackoverflow.com/questions/285551


J'ai supprimé la balise PL / SQL comme cela était complètement faux. Et les captures d'écran montrent clairement que Postgres est utilisé, pas Oracle.


Oh, désolé je ne savais pas que, merci pour la modification


3 Réponses :


0
votes

Votre code est très proche comme vous l'avez dit. Vous pouvez utiliser une instruction code> sur la troisième colonne pour modifier la sortie en T code> ou f code> en fonction de la valeur de id_emprunt Code>:

SELECT livre.id_livre,
       titre,
       CASE
         WHEN id_emprunt IS NULL THEN 'f'
         ELSE 't'
       END AS est_emprunte
  FROM livre NATURAL JOIN oeuvre LEFT JOIN emprunt ON livre.id_livre = emprunt.id_livre
  ORDER BY id_livre;


0 commentaires

0
votes

Utilisez simplement un cas code> Expression:

   (e.id_emprunt IS NOT NULL) as est_emprunte


0 commentaires

0
votes

Il vous suffit d'utiliser un cas. Donc:

SELECT livre.id_livre
       , titre
       , CASE WHEN id_emprunt IS NULL THEN 'f'
         ELSE 't' END AS est_emprunte 
FROM livre 
LEFT JOIN oeuvre 
USING(id_oeuvre)
LEFT JOIN emprunt 
USING(id_livre)
ORDER BY id_livre


0 commentaires