Reputation: 6943
Having this table
Table "Items"
itemID
itemTitle
itemContent
and this
Table "MyList"
userID
itemID
deleted
how can I select all rows from table "Items" and showing the field "deleted", even if the itemID do not exist in "MyList", given an userID?
Example of the query result:
itemID | itemTitle | deleted | userID
-------------------------------------
1 | Title1 | 1 | 2
2 | Title2 | 0 | 2
3 | Title3 | (null) | (null)
4 | Title4 | (null) | (null)
What would be the query, so that I can get that result?
Thanks
Upvotes: 3
Views: 20290
Reputation: 7506
You can use outer join
:
select a.itemId, a.itemTitle, b.deleted
from Items a left outer join MyList b
on a.itemId = b.itemId
Upvotes: 0
Reputation: 6943
I'm not sure if this is the best way of doing this, but it returns what I was looking for:
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
Upvotes: 0
Reputation: 120634
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: Based on OP's comment:
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
Upvotes: 16