Ajouter un nouveau champ dans une requête SQL

Résolu/Fermé
gabch - 1 janv. 2008 à 21:38
 gabch - 11 janv. 2008 à 17:11
Salut,
J'ai les tables suivantes :
Adhérent (num_ad, nom, prénom,…),
Livre (code, titre, auteur,…),
Prêt (num_p, # num_ad, # code, date_prêt, date_retour_prévue, date_retour)

Je veux avoir une liste complètes des adhérents accompagnés des titres des livres qu'ils ont emprunté et un nouveau champ "état" qui doit préciser si le livre a été rendu ou non, mon problème est ce dernier champ que je dois ajouter à ma requête SQL pour m'indiquer l'état du livre (si date_retour = Null, état = non rendu sinon état = rendu)

Comment introduire ce champ dans ma requête SQL ?

Ma requête sans ce champ est :
Select Adhérent.*, Livre.titre
From Adhérent, Livre, Prêt
Where Adhérent.num_ad = Prêt.num_ad and Livre.code = Prêt.code

Merci d'avance
A voir également:

4 réponses

Bonsoir,

à mon avis tu n'as pas besoin de modifier ta requette, mais au moment de l'affichage de ton tableau résultat, tu calcules par php


si date_retour=="NULL" echo "non rendu"

else echo "rendu"

@lain
0
jee pee Messages postés 40982 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 31 mars 2025 9 574
1 janv. 2008 à 22:04
bonjour,

je connais plus oracle où il y a la fonction nvl ou dans le select on peut rajouter nvl(pret.date_retour,'non rendu') tu aurais alors soit la date de retour, soit non rendu ( pour rajouter rendu, il faudrait rajouter un autre niveau de decode)

en cherchant pour mysql il semble y avoir la fonction identique coalesce, cf : http://www.nexen.net/index.php?option=com_nexen_v2&Itemid=233&&lang=FR&nexen_url_type=intern&nexen_path=docs%2Fmysql%2Fannotee%2Fcomparison-operators.php

donc dans ton select tu peux rajouter un champ coalesce(pret.date_retour,'non rendu')

cdt
0
Ce que j'ai compris est que la fonction coalesce permet de retourner le premier élément non- NULL d'une liste mais mon problème est que le champ état est ajouté lors de l'exécution de la requête pour afficher "rendu" ou "non rendu"

je voulais ajouter que cette requête me permet d'interroge une bdd Access à partir d'une application Java

Merci
0
Salut,
j'ai enfin resolu mon problème et pour ceux qui ca peut leur aider ma requête est :
"SELECT Adhérent.*, Livre.titre, IIf(Prêt.retour is Null,'Non rendu','Rendu')
FROM Livre, Adhérent, Prêt
WHERE Adhérent.num_ad = Prêt.num_ad and Livre.code = Prêt.code "

j'ai utilisé la fonction IIf(expr, truepart, falsepart)
0