У меня есть 3 таблицы (в архиве много разделов, раздел (может) принадлежит многим архивам):
archive
id PKdescriptionarchive_to_section
archive_id PK FKsection_id PK FKsection
id PKdescriptionКак бы выглядел SQL, чтобы перечислить все разделы, принадлежащие определенному идентификатору архива?
Я только изучаю SQL. Судя по тому, что я читал, мне нужно присоединиться или объединиться? К вашему сведению, я использую postgres.
[Редактировать] Это ответ от gdean2323, написанный без псевдонимов:
SELECT section.*
FROM section
INNER JOIN archive_to_section
ON section.id = archive_to_section.section_id
WHERE archive_to_section.archive_id = $this_archive_id


SELECT s.*
FROM archive_to_section ats
INNER JOIN section s ON s.id=ats.section_id
WHERE ats.archive_id= @archiveID
Я думаю, вы имеете в виду раздел INNER JOIN на s.id = ats.section_id
что означают символы * и @?
* означает все поля для этой таблицы, @archiveID - это параметр, вы можете заменить его на archive_id по вашему выбору, если хотите.
SELECT s.*
FROM section s INNER JOIN archive_to_section ats ON s.id = ats.section_id
WHERE ats.archive_id = 1
нужно писать с сокращениями? новичку может быть проще следовать ему. Благодарность
Аббревиатуры (псевдонимы) использовать не обязательно, многие люди их используют. Я предпочитаю этого не делать. См. Обсуждение плюсов и минусов псевдонима stackoverflow.com/questions/198196/when-to-use-sql-table-ali как
Точно. Важно понимать, что архивная таблица здесь не фигурирует.