SQL - выберите строки из двух разных таблиц - PullRequest
3 голосов
/ 10 февраля 2009

Имея эту таблицу

Table "Items"

itemID
itemTitle
itemContent

и это

Table "MyList"

userID
itemID
deleted

как выбрать все строки в таблице "Items" и показать поле "удалено", даже если itemID не существует в "MyList", учитывая идентификатор пользователя?

Пример результата запроса:

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

Каким будет запрос, чтобы я мог получить этот результат?

Спасибо

Ответы [ 3 ]

15 голосов
/ 10 февраля 2009
SELECT I.itemID, I.itemTitle, M.deleted
FROM
    Items I
    LEFT OUTER JOIN MyList M ON M.itemID = I.itemID
WHERE M.userID = 9

Редактировать: На основании комментария ОП:

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 голосов
/ 10 февраля 2009

Я не уверен, что это лучший способ сделать это, но он возвращает то, что я искал:

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
0 голосов
/ 10 февраля 2009

Вы можете использовать outer join:

select a.itemId, a.itemTitle, b.deleted
from Items a left outer join MyList b
on a.itemId = b.itemId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...