Sélectionnez à partir d'une autre table si la valeur existe pas

J'ai créé un violon pour cela, à ce lien:
http://www.sqlfiddle.com/#!2/7e007

Je pouvais pas trouver SQL compact /EC, il est donc dans MySQL.

Les tables ressemble à ceci

Records                      Clients
ID | NAME    | AGE           ID | NAME    
------------------           ----------------
1  | John    | 20            1  | John
2  | Steven  | 30            2  | Daniel
3  | Abraham | 30            3  |
4  | Donald  | 25            5  | Lisa 
6  |         | 35            6  | Michael
7  |         | 42            7  |

Je voudrais sélectionner à partir des deux tables, et si l'id est dans les deux tables, et les deux ont des noms, je voudrais que le nom de "Clients" comme valeur par défaut. Si le nom d'Enregistrements est vide, utilisez le nom du client (le cas échéant) et si les Clients.Le nom est vide; utiliser les enregistrements.Nom.

À partir des tableaux ci-dessus, je voudrais que ce:

ID | NAME    | AGE 
------------------
1  | John    | 20
2  | Daniel  | 30
3  | Abraham | 30
4  | Donald  | 25
5  | Lisa    |
6  | Michael | 35
7  |         | 42

Comment puis-je le faire en SQL Compact?

EDIT:
Grâce à d'excellentes réponses ci-dessous, j'ai réussi à venir avec cette requête, qui fonctionne PRESQUE:

SELECT t.id, t.name, t.age FROM 
(
    (
        SELECT r.id,
        CASE WHEN r.name = NULL THEN c.name ELSE r.name END  as name,
        r.age 
        FROM Records r 
        LEFT JOIN Clients c ON c.id = r.id
    )
    UNION 
    (
        SELECT c.id, c.name, null as age FROM Clients c where c.id NOT IN (select id from Records)
    )
) as t ORDER BY t.id 

Cela me donne ce résultat:

ID | NAME    | AGE 
------------------
1  | John    | 20
2  | Daniel  | 30
3  | Abraham | 30
4  | Donald  | 25
5  | Lisa    |
6  |         | 35
7  |         | 42

"Michael" (qui devrait être sur le #6) est manquante dans ce cas. Pourquoi?!

  • l'utiliser dans le cas de la partie: CASE WHEN c.name <> ''
  • essayé ce ainsi, même résultat. "lors de la c.le nom n'est nulle utiliser c.nom de d'autre de la r.nom". "Michael" est manquante, ce qui est vraiment déroutant.
  • désolé! vous étiez complètement à droite. <> NULL était mauvais (même si le post est en fait nulle), mais quand j'ai changé de <> " il a travaillé. Je vais vous donner votre réponse le cred. thx!
InformationsquelleAutor gubbfett | 2014-01-23