Как да групирате подобни записи по една стойност

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

Проблемът е, че учениците споделят един и същ уникален първичен ключ, така че не мога да групирам по това. И не мога да групирам по училище или клас, тъй като това би елиминирало други ученици.

По принцип искам да групирам всички записи за всеки ученик според училище, така че да има само 1 запис на училище за всеки ученик.

Наистина не ме интересува какъв клас показва групирането, тъй като наистина искам да намеря ученици, които са изброени в повече от едно училище.

Например

id    first    Last    Class School
22     mike     bundy    1     tan
22     mike     bundy    2     tan
22     mike     bundy    3     light

Искам да го групирам до това

id    first    Last    Class School
22     mike     bundy    1     tan
22     mike     bundy    3     light

person mmSQL    schedule 17.05.2013    source източник
comment
Това означава ли, че изобщо не ви интересува полето Class или че искате най-ниската стойност на класа? Може ли малко по-сбито?   -  person Joe Meyer    schedule 17.05.2013
comment
обмисляхте ли да използвате distinct?   -  person varun    schedule 17.05.2013
comment
Изобщо не ме интересува полето за клас, но то се изисква в съединението, за да се намери с кое училище е свързан ученикът.   -  person mmSQL    schedule 17.05.2013
comment
Изглежда не мога да разгранича, за да работя, и отделни студентски ред.. Тази база данни има твърде много записи, за да направи просто разграничение, тъй като това би пропуснало други ученици.   -  person mmSQL    schedule 17.05.2013
comment
Колоните във вашия списък за избор не съответстват на данните, които показвате като резултат от вашите данни. Коя колона в избраното се отнася за всяка колона с данни?   -  person Taryn    schedule 17.05.2013
comment
Изчистих заявката, така че има повече смисъл тук   -  person mmSQL    schedule 17.05.2013


Отговори (1)


Можете просто да използвате клаузата за група по, за да получите единичен запис за всяко училище. като

SELECT
        user.user_id,
        user.last_name,
        user.first_name,
        student.sis_id,
        organization.`NAME`AS school,
        count(*) as Count
    FROM
        user
    JOIN student ON user.user_id = student.user_id
    JOIN x_user_group ON _user.user_id = x_user_group.user_id
    JOIN group ON _x_user_group.group_id = group.group_id
    JOIN organization ON group.owner_id = organization.organization_id
Group by
        user.user_id,
        user.last_name,
        user.first_name,
        student.sis_id,
        school
Order by
        user.last_name,
        user.first_name

Броят на агрегатната функция се изисква, тъй като се използва групиране по. Просто го игнорирайте в набора с резултати. Сега ще имате по един ученик във всяко училище.

person asim-ishaq    schedule 17.05.2013
comment
Това работи! Благодаря.. Така че предполагам, че групата трябва да слезе до училищното ниво - person mmSQL; 17.05.2013