Мне нужно сравнить результаты из двух разных таблиц, чтобы получить количество вхождений - PullRequest
0 голосов
/ 22 января 2012

У меня есть база данных с 2 таблицами: Таблица 1 - Записи (userID, number1, number2, number3, number4, number5, number6) Таблица 2 - Результат (number1, number2, number3, number4, number5, number6)

В таблице «Записи» хранится 6 чисел, угаданных для каждого идентификатора пользователя, и уже насчитывается около 1200 строк.Таблица Result хранит 6 чисел и имеет только одну строку.

Проблема теперь в следующем:

Мне нужно создать отчет, который будет 1. сравнивать 6 чисел в таблице Result с каждым и2. каждая строка таблицы «Записи». 2. Подсчитайте числа, которые угадал пользователь.

Например, если бы результаты были 1,2,3,4,5,6, а пользователь А угадал 1,3,5,7,9,11, то правильное число угадываний для пользователя userA равно 3Если пользователь B угадал 2,8,11,12,13,24, то правильное количество догадок для userB равно 1. Если userC угадал 23,24,25,26,27,28, то правильное количество догадок для userCравно 0.

Поэтому мой отчет должен содержать 1200 строк с 2 столбцами (userID и Correct_Number_of_Guesses).

Каков наилучший подход к этой проблеме?

Ответы [ 2 ]

1 голос
/ 22 января 2012
SELECT userID
     , Case When t1.number1 = t2.number1 Then 1 Else 0 End +
          Case When t1.number2 = t2.number2 Then 1 Else 0 End +
          Case When t1.number3 = t2.number3 Then 1 Else 0 End +
          Case When t1.number4 = t2.number4 Then 1 Else 0 End +
          Case When t1.number5 = t2.number5 Then 1 Else 0 End +
          Case When t1.number6 = t2.number6 Then 1 Else 0 End as CorrectGuesses
  FROM Table1 t1
  cross join Table2 t2
0 голосов
/ 22 января 2012

С Синтаксис MySQL IF :

SELECT 
     userID,
      if( t1.number1 = t2.number1, 1, 0 )+
      if( t1.number2 = t2.number2, 1, 0 )+
      if( t1.number3 = t2.number3, 1, 0 )+
      if( t1.number4 = t2.number4, 1, 0 )+
      if( t1.number5 = t2.number5, 1, 0 )+
      if( t1.number6 = t2.number6, 1, 0 ) 
     as Correct_Number_of_Guesses
  FROM 
     Table1 t1
       cross join 
     Table2 t2
...