Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 14.01.2019, 20:51   #1
SpherX21
Новичок
 
Регистрация: 14.01.2019
Сообщений: 1
Репутация: 10
По умолчанию MySQL сортировка попарный вывод

Приветствую всех. Очень нужна помощь. Есть таблица. Необходимо создать SQL-запрос и вывести студентов попарно в два столбца в зависимости от их среднего балла из таблицы ведомость.
Пример, есть у нас 4 студента и известны их средние баллы:
Иванов 5
Петров 4,5
Сидоров 4
Скворцов 3,5
Таким образом они должны выводиться в таком порядке:
1 столбец | 2 столбец
Иванов | Петров
Петров | Сидоров
Сидоров | Скворцов
Т.е. студенты выводятся попарно X>Y в таком порядке
Файл с БД прикреплен.
46.rar
SpherX21 вне форума   Ответить с цитированием
Старый 15.01.2019, 10:24   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,777
Репутация: 2114
По умолчанию

1. студенты в ОДНУ колонку в нужном порядке (c "нумерацией" -- recno)
Код:

select recno, ... order by ...

2. вывести полученную выше таблицу в ДВЕ колонки
Код:

select col1.*, col2.*
from ( select ... order by ... ) as col1 --вывод нечетных строк (см. where)
left join ( select ... order by ... ) as col2 --вывод четных( см. on )
                  on col1.recno =col2.recno+1 --условие соединения строк (следующая четная строка)
where col1.recno div 2 =1 --из первой только НЕЧЕТНЫЕ строки

P.S. если сумеешь можно в col1, col2 собирать только "нужные"(четные/нечетные) общего списка
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 15.01.2019, 10:49   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,275
Репутация: 6449
По умолчанию

Не, чет-нечет не нужен, чуть по другому
Код:

select col1.*, col2.*
from ( select ... order by ... ) as col1 --вывод всех строк
left join ( select ... order by ... ) as col2 --вывод следующих( см. on )
                  on col1.recno =col2.recno+1 --условие соединения строк (следующая строка)

у одной записи второе поле null будет
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных из БД MySQL djunjich PHP 0 09.08.2017 13:20
Вывод MySQL в PHP s88s PHP 13 29.04.2016 16:08
Вывод данных с mysql maxidon PHP 2 21.07.2012 00:59
Вывод из MySQL 4ok PHP 2 29.12.2010 04:14
Вывод данных из MySQL kirosin JavaScript, Ajax 2 17.06.2010 23:52


19:00.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru