Предположим, у меня есть две таблицы, одна с блога, а другой с читателями и их комментарии:SQL: Proper Регистрация Синтаксис
Таблица 1:
Имя таблицы: · блоги, ·:
структура:
id (int)
title (string)
Таблица 2:
Название таблицы: Читатели:
id (int)
blog_post_id (int)
name (string)
comment (string)
в таблице Читатели есть уникальный композитный ключ на blog_post_id/имени (т.е. один комментарий для читателя за сообщение), хотя это может не иметь значения для моего вопроса.
Я хочу, чтобы иметь возможность сделать один запрос, говорит мне, какой комментарий конкретного читателя был в каждом BlogPost, но он должен включать BlogPosts, для которого нет комментариев, введенных для этого читателя (поэтому запрос должен возвращать одну строку для каждый блог в базе данных).
Я попробовал несколько вариантов, которые выглядят следующим образом:
SELECT
BlogPosts.id,
BlogPosts.title,
Readers.name,
Readers.comment
FROM
BlogPosts
RIGHT JOIN Readers ON
(BlogPosts.id = Readers.blog_post_id)
WHERE Readers.name = "joe"
..выполняется просто возвращает строки, где Eсть фактически комментарий от Джо. Другие варианты, в которых мне удалось получить все сообщения в блоге, дали мне недопустимый идентификатор, когда я включил предложение where.
Я использую Oracle Express 10g в случае, если это имеет значение.
Спасибо за любую помощь.
Это будет работать, но вы можете захотеть изменить ПРАВОЕ СОЕДИНЕНИЕ В ЛЕВЫЙ ВНЕШНИЙ ВСТУПИТЕЛЬ. По какой-то причине LEFT намного более популярен, чем RIGHT, по крайней мере, с каждой системой и разработчиком, с которым я работал (но мне было бы интересно услышать, есть ли у других людей разные впечатления). Я знаю, что это просто стиль, который не имеет особого значения для этого конкретного вопроса, но, вероятно, это хорошая привычка. –
Это одна из тех вариаций, которые я пробовал. Я получаю: ORA-00904: «joe»: неверный идентификатор –
Вместо этого используйте одиночные кавычки. Я отредактировал свой ответ. – bernie