Я сделал проект удаленного приложения поверх libpq для PostrgreSQL . Это ведет себя хорошо, но я представил общее функционирование приложения. Для каждого конечного результата, который я получаю, случается так, что я вызываю что-то вроде предложения 40 select (через tcpip).
У меня есть воспоминания от SQL-Server, напоминающие мне, чтобы минимизировать количество взаимодействий между моим удаленным приложением и базой данных. Проанализировав мои выборки, я думаю, что смогу сократить это число до 3-х SELECT
, используя объединения. Но я не помню синтаксис для использования результата a SELECT
в другом SELECT
.
Например:
SELECT * FROM individual
INNER JOIN publisher
ON individual.individual_id = publisher.individual_id
WHERE individual.individual_id = 'here I would like to use the results of a another select'
Этот другой SELECT
будет просто такого рода:
SELECT identifier FROM another_table WHERE something='something'
Вот упрощенная компоновка таблиц, несколько раз отклоненная для разных типов элементов ... (3 абсолютно разных типа, следовательно, 3 запроса SQL, если они оптимизированы).
table passage
id_passage PK
business_field_passage bytea
table item
id_item PK
id_passage FK
business_field_item text
table item_detail
id_item_detail PK
id_item FK
business_field_item_detail text
image_content bytea
Есть несколько id_item
для одного id_passage
.
Есть несколько id_item_detail
для одного id_item
.
Как бы вы это написали?
Как называется действие по перенаправлению одного выбора в другой (если есть)?
источник
Ответы:
Это то, к чему вы стремитесь? Убедитесь, что сравниваемые поля сопоставимы (т. Е. Оба поля являются числовыми, текстовыми, логическими и т. Д.).
Если вы хотите выбрать на основе нескольких значений:
источник
SELECT someID FROM table WHERE blahblahblah
есть несколько записей? Я проверю это прямо сейчас.WHERE Individual.IndividualId IN...
выглядит хорошо.Вы можете просто переписать это как другое
JOIN
. Обычно это самый простой и быстрый способ:Я также несколько упростил и покончил с необоснованным написанием идентификаторов CamelCase.
источник
join
вместо ...in ( select...)
В таком случае я должен также приписать хороший ответ Эрвину.