@Hitsuzen

Как написать запрос — выбрать из т1 только те значения, у которых соответствующие записям поля в т2 не равны нулю?

Есть 2 таблицы - т1 и т2. Каждому значению из т1 соответствует много значений в т2. Необходимо выбрать только те поля из т1, у которых нет нулевых значений в соответствующих им полям в т2. То есть выводить только если все соответствующие значения в т2 не ноль. Как это сделать?
  • Вопрос задан
  • 429 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
select *
from t1
inner join t2 on t1.link_field = t2.link_field and t2.some_field <> 0 and t2.other_field <> 0


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

select * from t1 where id not in (select id_field from t2 where some_field = 0)


Вообще таблицы такие:
questions(id, text), answers(id, question_id, answer, text), history(id, user_id, answer_id, question_id, test_id), history_tests(id, date), нужно вывести все вопросы, на которые все существующие ответы верны.


Я не до конца понимаю в какой таблице что хранится, но что-то вроде этого:
select q.*
from questions q
inner join history h on h.question_id = q.id
where q.id not in (
    select a.question_id
    from answers a
    inner join history h on a.id = h.answer_id and a.answer = 0
)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@targrik
select t1.* from t1 left join t2 on t1.link_field=t2.link_field group by t1.link_field having min(abs(t2.value_field))<>0
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы