Gettin значение из таблицы и использование в одном запросе

98
10

SELECT (h.horario), h.codigo
FROM horarios as h
JOIN horario_turma as h_t
ON(h.codigo != h_t.cd_horario)
WHERE h_t.cd_turma = 'HTJ009'
AND h_t.cd_dia = 2
AND h.cd_turno = 1

Я пытаюсь выяснить, есть ли возможность получить значение h.cd_turno из другой таблицы и использовать в том же запросе, так как это значение будет переменной. Итак, я должен получить это значение из запроса, а затем передать значение PHP и сделать еще один запрос с этим значением. Есть ли способ сделать это в том же запросе?

Там есть таблица под названием turmas(codigo, cd_turno). У меня будет значение codigo, в данном случае HTJ009, и я бы хотел выбрать значение cd_turno.

Запрос, используемый для получения значения:

SELECT cd_turno FROM turmas WHERE codigo='HTJ009'

спросил(а) 2014-02-06T20:30:00+04:00 6 лет, 7 месяцев назад
1
Решение
113

Вы можете использовать подзапрос, например:

SELECT (h.horario), h.codigo
FROM horarios as h
JOIN horario_turma as h_t
ON(h.codigo != h_t.cd_horario)
WHERE h_t.cd_turma = 'HTJ009'
AND h_t.cd_dia = 2
AND h.cd_turno = (SELECT cd_turno FROM turmas WHERE codigo='HTJ009')

В этом случае помните, что важно, чтобы подзапрос возвращал только один результат, иначе вы столкнетесь с ошибкой. Если вы видите такую ошибку, возможно, вам придется подстроить подзапрос, чтобы обеспечить возврат только одного результата.

Проверьте это для документации подзапроса Postgres

ответил(а) 2014-02-06T20:42:00+04:00 6 лет, 7 месяцев назад
41

SELECT (h.horario), h.codigo
FROM horarios as h
JOIN horario_turma as h_t
ON(h.codigo = h_t.cd_horario)
WHERE h_t.cd_turma = 'HTJ009'
AND h_t.cd_dia = 2
AND h.cd_turno = 1 and h_t.cd_horario is null

ответил(а) 2014-02-06T20:32:00+04:00 6 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема