Bonjour,
Imaginons une table T1 avec
A;1
B;2
C;3
J'aimerais trouver le requête qui
- si je lui donne A, elle me retourne A;1
- et si je lui donne D (qui n'existe pas) me retourne quand même "D".
Comment faire?
merci d'avance
Bonjour,
Imaginons une table T1 avec
A;1
B;2
C;3
J'aimerais trouver le requête qui
- si je lui donne A, elle me retourne A;1
- et si je lui donne D (qui n'existe pas) me retourne quand même "D".
Comment faire?
merci d'avance
Une base de données ne peut pas inventer les données inexistantes !
Il te faut a minima une table contenant toutes les lettres de A à D si tu veux avoir D, grâce à une jointure externe.
Soit la table Lettre (lettre) contenant {A, B, C, D} et la table T1 (lettre, valeur) contenant les valeurs que tu as données.
=> Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT l.lettre, T1.valeur FROM Lettre l LEFT OUTER JOIN T1 ON T1.lettre = l.lettre
lettre, valeur
A, 1
B, 2
C, 3
D, NULL
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Ok, merci. J'espérais qu'il y aurait moyen d'éviter de créer une table temporaire.
a+
Bonjour,
D'accord avec Cinephil.
Néanmoins, j'aimerai une précision:Une base de données ne peut pas inventer les données inexistantes !
Comment tu lui donnes A?si je lui donne A, elle me retourne A;1
Qu'est-ce que tu entends par là?
Quel est ton SGBD?
A+
Soazig
Tu peux utiliser une pseudo table, et ainsi le coder dans ta requete, mais tout dépend de ce que tu veux faire...
En toute logique, tu devrais avoir cette liste (A,B,C,D) quelques part dans une de tes tables !
Si ce n'est pas le cas, soit tu as un problème de conception au niveau de ta base, soit il y a une autre raison, mais dans ce cas la, laquelle ? et je crois que c'est le but de la question de soazig...
Détail plus le problème qu'on puisse mieux détailler la (les) solution(s)![]()
Bonjour,
C'est bien dans cette idée, que je lui ai demandé quel SGBD il utilisait.Envoyé par aieeeuuuuu
A+
Soazig
Bonjour,
J' ai une base client avec un ID et le nom client et j'ai besoin de contrôler si certains ID existent dans cette table.
L'idée est la même : à savoir pouvoir identifier les ID qui n'existent plus dans ma base client.
Je pensais que par requête seule (sans passer par un table tempo), on pouvait sortir les ID définis dans mon filtre et qui n'existent pas en base.
Quelqu'un peut-il me confirmer ?![]()
Si tes ID sont, comme ils devraient l'être pour constituer une bonne clé, de type entier et auto-incrémentés, tu peux faire une requête permettant de trouver les trous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT t1.ID AS avant_trou, MIN(t2.ID) AS apres_trou FROM la_table t1 LEFT OUTER JOIN la_table t2 ON t2.ID > t1.ID WHERE t2.ID - t1.ID > 1 GROUP BY t1.ID ORDER BY t1.ID
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Merci pour la réponse, même si elle ne colle pas complètement à mon souhait.
J'ai procédé via une table tempo.
bonne journée
Partager