Всем привет! Я только начинаю постигать SQL и PostgeSQL, поэтому вопрос у меня довольно-таки простой и скорее всего имеет тривиальное решение, но поскольку с аспектами SQL я знаком плохо и документацию пока ещё воспринимаю не до конца
Задача состоит в следующем:
Имеется база данных, в ней две таблицы: table1 (id, table2_id) и table2(id, column1, column2). По сути table2_id - это FOREIGN KEY, но в БД он так не определён, поскольку приложение, которое использует эту БД не позволяет использовать такиею ключи, точнее это крайне не желательно. Отсюда собственно и проблема.
А конкретно задача в следующем: нужен запрос, который будет выбирать элементы из table1 по значениям из таблицы 2, т.е. что-то типа SELECT * FROM table1 WHERE table2_id = ( SELECT id FROM table2 WHERE column1 = 'value' )
, но при этом вместо WHERE должно быть что-то такое, что может принимать не только одно значение.
Честно, пытался понять документацию, но не с умел в этом преуспеть.
Спасибо за внимание.
1. Внешние ключи заводятся
1. Внешние ключи заводятся внутри БД, а приложение о них может даже и не знать.
2. У вас не та ситуация и внешние ключи судя по запросу вам ни к чему.
3. Используйте IN, например:
4. Используйе JOIN (позволяет избежать подзапросов), например:
Полная и исчерпывающая документация по всем формам SELECT в PostgreSQL уже переведена на русский язык:
http://postgresql.ru.net/manual/queries.html
Большое спасибо! Вариант 3
Большое спасибо! Вариант 3 то, что нужно, так как нужно, чтобы возвращалась именно первая таблица, со всеми своими значениями.