MySQL / SQL-запрос для нескольких таблиц - PullRequest
0 голосов
/ 28 сентября 2018

У меня несколько таблиц, и я пытаюсь выполнить запрос на поиск студента по его идентификаторам «studentID».Когда я запускаю запрос ниже, MySQL или SQL Server зависает (загрузка…).Любое предложение?Не все таблицы перечислены.Спасибо.

ТАБЛИЦЫ:

студенты

•   studentsID  Int Pkey
•   Fname   string
•   Lname   string …    
•   studentsGender  Int Fkey
•   studentsGender  int Fkey
•   studentsRezAddressID    int Fkey
•   studentsBirthID int Fkey
•   studentsParentsID   int Fkey

адрес студента:

•   RezAddressID    Int Pkey
•   RezStreet   Varchar
•   RezCity Int Fkey
•   RezState    int Fkey
•   RezDistrict int Fkey
•   RezCountry  int Fkey
•   RezZipcode  int

student_edu:

•   eduID   Int Pkey
•   eduAcadYear Int Fkey
•   eduAdmitionTest Varchar
•   scholarship Varchar
•   study   Int Fkey
•   classroom   Int Fkey
•   studentStatus   Int Fkey
•   testStatus  Int Fkey
•   additionalInfo  Varcha

r

Academic_years

academicID  Int Pkey
academicYear    VarChar

Города

cityID  Int Pkey
city    VarChar

Страны

countryID   Int Pkey
country VarChar

Страны

districtsID Int Pkey
district    VarChar

этнические группы

ethnicityID Int Pkey
ethnicity   VarChar

grads

gradID  Int Pkey
grad    VarChar

SELECT
students.studentsID,
students.studentsLname,
students.studentsMname,
students.studentsFname,
students.studentsMobile,
students.studentEmail,
students.joined_date,
genders.gender,
ethnicities.ethnicity,
races.races,
student_address.RezStreet,
student_address.RezZipcode,
grads.grad,
rooms.rooms,
studies.study,
student_edu.additionalInfo,
student_status.student_status,
academic_years.academicYear,
teststatus.testStatus,
student_edu.scholarship,
student_birth_place.birthDate,
cities.city,
states.states,
countries.country,
districts.district   
FROM
    (
        students,
        student_edu,
        student_address,
        studies,
        rooms,
        student_status,
        teststatus,
        academic_years,
        grads,
        races,
        genders,
        ethnicities,
        student_birth_place,
        districts,
        cities,
        states,
        countries
    )
WHERE students.studentsID = “00012” ;

Я также использовал JOIN Statement, но проблема все еще сохраняется.

INNER JOIN grads As studGrad ON studentsEduID = student_edu.eduID INNER JOIN studies AS studyOption ON student_edu.study = studies.studiesID INNER JOIN rooms AS classRoom ON student_edu.classroom = rooms.roomsID INNER JOIN student_status AS stat ON student_edu.studentStatus = student_status.student_statusID INNER JOIN testStatus AS admiTest ON student_edu.testStatus = testStatus.testStatusID INNER JOIN student_address AS studAddre ON students.studentsRezAddressID = student_address.RezAddressID INNER JOIN student_birth_place AS stubBirth ON students.studentsBirthID = student_birth_place.birthID INNER JOIN cities AS ville ON student_address.RezCity = cities.cityID INNER JOIN states AS province ON student_address.RezState = states.statesID INNER JOIN districts AS commune ON student_address.RezDistrict = districts.districtsID INNER JOIN countries AS pays ON student_address.RezCountry = countries.countryID

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Начните с базового запроса, как следующий, и на каждом шаге добавляйте информацию из другой таблицы, используя предложение JOIN, например:

SELECT
    students.*,
    student_address.*
FROM
    students
LEFT JOIN
    student_address ON student_address.RezAddressID = students.studentsRezAddressID
WHERE
    students.studentsID = 12;

Идите так до тех пор, пока не получите ошибку или запросвисит.Кроме того, почему вы сравниваете столбец studentID со строкой в ​​предложении WHERE, поскольку studentID является целочисленным столбцом?

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

0 голосов
/ 29 сентября 2018

Пройдите ЛЕВЫМ СОЕДИНЕНИЕМ и следуйте Вверху вниз, например.

Таблица учеников

  •   studentsID  Int Pkey
  •   Fname   string
  •   Lname   string …    
  •   studentsGender  Int Fkey
  •   studentsGender  int Fkey
  •   studentsRezAddressID    int Fkey
  •   studentsBirthID int Fkey
  •   studentsParentsID   int Fkey

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

0 голосов
/ 28 сентября 2018

Вам следует избегать такого большого набора результатов.Для этого есть несколько вариантов.

Вариант 1. Выберите минимальное количество нужных вам столбцов.

Вариант 2. Использование подкачки для получения ограниченного числа строк в наборе результатов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...