SQL-запрос для отображения соответствия в двух таблицах

#mysql #sql

#mysql #sql

Вопрос:

 G  K  1  2  3  4 ...
K  2  2  1  1  3 ...              
1  2  2  4  2  2
2  1  4  2  5  2
 

У меня есть две таблицы. Родительская таблица и таблица учащихся. Мне нужно найти, у какого родителя или семьи двое детей в двух разных классах. Приведенная выше таблица представляет количество родителей, у которых дети учатся в нескольких разных классах. Например, класс K и класс 1 есть две семьи, в которых двое детей учатся в K и первом классе.

Что мне нужно сделать, так это придумать запрос, чтобы найти, в каких семьях или у родителей двое детей в двух разных классах.

Комментарии:

1. можете ли вы показать, что вы пробовали до сих пор, какие результаты это дает и какие результаты вы пытаетесь получить.

2. Что вы пробовали до сих пор? Каков ваш желаемый результат из предоставленных вами тестовых данных?

3. Это плохая структура данных для SQL. Вы уверены, что у вас нет других источников информации?

4. Это ваша фактическая структура таблицы базы данных? Не могли бы вы лучше объяснить, что представляют собой отдельные столбцы?

Ответ №1:

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

 select (sum(k   `1`   `2`   . . . ) -
        (case when g = 'k' then k
              when g = `1` then `1`
              when g = `2` then `2`
              . . .
        )
       ) / 2
from table t;
 

Основная идея заключается в том, что вы берете сумму всех чисел в одной строке, вычитаете числа по диагонали и делите на 2. Обратите внимание, что это может быть неправильно. Семьи, в которых дети учатся в трех классах, будут пересчитаны. У вас недостаточно информации, чтобы исправить это. Более подробная информация поможет.