Je veux insérer une condition dans une de mes requêtes, mais je ne sais pas vraiment comment le faire. Fondamentalement, je suis en train de trier un tas de fichiers par leur dossier _id, c'est-à-dire le dossier auquel ils appartiennent (en utilisant order by folder_id). Ce que je voudrais maintenant, pour chacun de ces groupes de fichiers, est la requête pour choisir le premier fichier qui satisfait une condition particulière. Si cette condition n'est pas satisfaite par l'un des fichiers d'un dossier, la requête doit sélectionner le premier document disponible dans le dossier.SI EXISTE dans la clause WHERE?
C'est ma requête (simplifiée):
select folder_id,
file_id,
first_name
from f_file
where first_name = 'John'
order by folder_id
Donc, si mes résultats sont maintenant:
FOLDER ID FILE ID AUTHOR
A 32 John
A 41 John
A 56 Thomas
A 78 Peter
B 02 Peter
B 03 Peter
B 45 Peter
C 34 John
C 56 Thomas
C 77 Peter
C 86 John
D 12 Peter
D 34 Thomas
D 89 Thomas
pour chaque dossier, je voudrais la requête pour afficher uniquement le premier document (ID_fichier le plus bas) créé par John. S'il n'y a aucun document créé par John du tout dans ce dossier, que le premier de n'importe quel autre auteur fera. Donc, l'ID doit être le plus bas, mais l'auteur doit être John ou un autre. Mon idée serait d'insérer une clause IF EXISTS
dans la clause WHERE
, mais comment le faire?
Nous vous remercions de vos réponses. Val
Vous devez montrer un exemple dans vos données d'échantillons et les résultats souhaités où John n'a tout simplement pas se produire commodément aussi le plus bas file_id. –
Pour les dossiers B et D, John n'a pas l'ID de fichier le plus bas, donc les premiers documents de Peter sont affichés. –
Je pense que vous avez manqué mon point. Pour B et D, John n'a aucun fichier. Voyez-vous comment un cas d'utilisation potentiel (et peut-être le plus important) manque? Ajoutez John à l'un de ces ensembles, avec un ID de fichier plus élevé. Vos exemples de données doivent montrer comment nous résolvons réellement le problème. C'est comme demander un code qui traite, avec des années bissextiles, mais seulement des données d'échantillon pour avril 2007. –