2016-09-02 3 views
0

Есть ли способ выполнить запрос SQL, где я ищу несколько зависимых предложений? Например, если бы у меня была таблица Людей, я бы хотел вернуть всех людей (Type = Student and id = 1) & & (Type = Teacher and id = 44). Как вы можете себе представить, я могу развернуть каждую скобку по нескольким операторам на один кронштейн и даже добавить третью четвертую скобку для запроса более типов.Запрос нескольких операторов для выбора двух строк за раз

таблица выглядит следующим образом:

Humans 
id 
type 
name 

До сих пор, я вынужден назвать тот же запрос много раз, когда я делаю

select * 
from t_humans 
where type = a_type and id = an_id 
+2

Я удалил несовместимые теги базы данных. Добавьте тег для базы данных, которую вы действительно используете. –

+0

@GordonLinoff Это будет для Psql и где (x, y) в (...) предложение не поддерживается. Любой способ сделать это через sbuqueries/производные таблицы или любую вещь такого характера? –

ответ

0

Если я правильно понимаю, обобщенный метод SQL заключается в использовании более сложных булевых условий:

select h.* 
from t_humans h 
where (type = 'Student' and id = 1) or 
     (type = 'Teacher' and id = 44); 

Некоторые базы данных позволяют упростить это используя кортежи с in:

select h.* 
from t_humans h 
where (type, id) in (('Student', 1), ('Teacher', 44)); 
+0

А, я использую PSQL и специализированный синтаксический анализатор, который автоматически генерирует Java-запросы sql-запросов. Это автогенерация не поддерживает предикат IN. Любой способ сделать это с ЛЮБОЙ? Или более сложный запрос, соединяющий себя или что-то в этом роде? Я не очень опытен с psql/sql –