2009-02-10 8 views
3

Avoir cette tableSQL - Sélectionnez les lignes de deux tables différentes

Table "Items" 

itemID 
itemTitle 
itemContent 

et ce

Table "MyList" 

userID 
itemID 
deleted 

comment puis-je sélectionner toutes les lignes de la table « Articles » et montrant le champ « supprimé », même si l'itemID n'existe pas dans "MyList", donné un userID?

Exemple de résultat de la requête:

itemID | itemTitle | deleted | userID 
------------------------------------- 
1  | Title1 | 1  | 2 
2  | Title2 | 0  | 2 
3  | Title3 | (null) | (null) 
4  | Title4 | (null) | (null) 

Quelle serait la requête, afin que je puisse obtenir ce résultat?

Merci

Répondre

0

Je ne suis pas sûr que ce soit le meilleur façon de le faire, mais il renvoie ce que je cherchais:

select itemID, itemTitle, deleted, userID 
FROM(
SELECT i.id_itemID, i.itemTitle, M.deleted, M.userID 
FROM 
    MyList M 
    right OUTER JOIN Items I ON I.itemID= M.itemID 
) as MyTableItems 
where itemID = 3 or itemID is null 
15
SELECT I.itemID, I.itemTitle, M.deleted 
FROM 
    Items I 
    LEFT OUTER JOIN MyList M ON M.itemID = I.itemID 
WHERE M.userID = 9 

Edit: Basé sur le commentaire OP:

SELECT I.itemID, I.itemTitle, M.deleted, M.userID 
FROM 
    MyList M 
    LEFT OUTER JOIN Items I ON I.itemID = M.itemID 
WHERE M.userID = 9 
0

Vous pouvez utiliser outer join:

select a.itemId, a.itemTitle, b.deleted 
from Items a left outer join MyList b 
on a.itemId = b.itemId 
Questions connexes