Uwakpeter Ответов: 1

Инструкция Database select возвращает больше строк, чем ожидалось


Всем привет,

Я извлекаю записи из базы данных с помощью оператора select, но поскольку я сохранил свойство value в таблице, мне нужно объединить несколько таблиц, чтобы отобразить свойство text, прежде чем присоединиться к другим таблицам, результат вышел прекрасным, вернув четыре строки, после присоединения к таблице я получил 14 строк, я попытался отладить его, но, похоже, не видел, откуда берется проблема. Я буду признателен, если кто-нибудь сможет помочь.

Что я уже пробовал:

Скрипт перед объединением таблиц:
SELECT DISTINCT 
    ,rs.[ResultID]
    ,rs.[StudentNo_]
    ,rs.[House]	
    ,rs.[DOB]
    ,rs.[AcademicSession]
    ,rs.[Term]
    ,rs.[TeacherRemark]
    ,rs.[MarkObtainable]
    ,rs.[MarkObtained]
    ,rs.[Subject]
    ,rs.[School] 	
    ,rs.[CATest1] 
    ,rs.[CATest2]
    ,rs.[CATest3]
    ,rs.[CATest4]
    ,rs.[CATest5]
    ,rs.[ExamScore]
    ,rs.[HeadTeacherRemark]
    ,rs.[CATotal]
    ,rs.[Grade]
    ,rs.[Remark]
    ,rs.[Class]
    ,rs.[ClassAverage]
    FROM [Results] rs    
    WHERE rs.[StudentNo_] = @StudentNumber AND rs.[Term] = @Term AND rs.  [AcademicSession] = @AcademicSession AND rs.[Class] = @Class AND rs.[School] =     @School

скрипт после объединения таблиц:
SELECT DISTINCT pss.[Code] SubCode
      ,ss.[Description] SubjectName
	  ,pss.[Subject Code] SubjectCode
	  ,pss.[Core Subject] CoreSubject
	  ,pss.[CA Calculator] CACalculator
	  ,pss.[Grade Display] GradeDisplay
	  ,pss.[Term Total Calculator] TermTotalCalculator
      ,rs.[ResultID]
      ,rs.[StudentNo_]
	  ,sd.[FullName]
	  ,sd.[ImagePath]
	  ,sd.[Gender]
      ,sd.[House]	  
      ,sd.[Date Of Birth] DOB
      ,ass.[Description] AcademicSession
      ,rs.[Term]
      ,rs.[TeacherRemark]
      ,rs.[MarkObtainable]
      ,rs.[MarkObtained]
      ,rs.[Subject]
      ,sl.[Name] School	  
      ,rs.[CATest1] 	  
      ,rs.[CATest2]
      ,rs.[CATest3]
      ,rs.[CATest4]
      ,rs.[CATest5]
      ,rs.[ExamScore]
      ,rs.[HeadTeacherRemark]
      ,rs.[CATotal]
      ,rs.[Grade]
      ,rs.[Remark]
      ,rs.[Class]
	  ,rs.[ClassAverage]
  FROM [Results] rs
  INNER JOIN [PrimarySubjectSetUp] pss ON rs.[Subject] = pss.[Subject Code]
  INNER JOIN [SchoolList] sl ON rs.[School] = sl.[Code]
  INNER JOIN [Student] sd ON rs.StudentNo_ = sd.No_
  INNER JOIN [School Subjects] ss ON pss.[Subject Code] = ss.[Code]
  INNER JOIN [AcademicSession] ass ON rs.[AcademicSession] = ass.Code
  WHERE rs.[StudentNo_] = @StudentNumber AND rs.[Term] = @Term AND rs.[AcademicSession] = @AcademicSession AND rs.[Class] = @Class AND rs.[School] = @School
  ORDER BY pss.[Subject Code] ASC

CHill60

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

Uwakpeter

Спасибо,вот в чем была проблема

ZurdoDev

Мы не можем помочь, кроме как сказать, что у вас есть несколько совпадающих записей в одной из новых таблиц, к которым вы присоединились.

Uwakpeter

Спасибо,вот в чем была проблема

RedDk

Я скажу это, просто так, это, вероятно, тип соединения. И в заключение проверьте определения таблиц для каждой из таблиц и убедитесь, что все типы являются идентифицируемыми типами, которые вы хотите, чтобы они были. Иногда импортированные / экспортированные данные проявляют неправильные типы В SQL Server.

phil.o

Пробовал левое внешнее соединение вместо внутреннего соединения?

Uwakpeter

я тоже пробовал это сделать, но ничего не вышло

1 Ответов

Рейтинг:
10

ZurdoDev

Как уже упоминалось в комментариях, причина множественности записей заключается в том, что по крайней мере одна из таблиц, добавленных в ваши объединения, имеет более одной совпадающей записи.

Рад слышать, что у тебя все получилось.