Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Сортировка SQL
savelikan  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 427
Пользователь №: 18633
На форуме: 7 лет, 11 месяцев, 17 дней
Карма:




Привет всем кодерам)
Помогите, пожалуйста с SQL запросом:

Примерная таблица вопросов
CREATE TABLE `question` (
`q_id` int(11) NOT NULL,
`q_topic` int(11) NOT NULL,
`q_text` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `question`
ADD PRIMARY KEY (`q_id`);


и вот варианты ответов
CREATE TABLE `answers` (
`a_id` int(11) NOT NULL,
`a_question` varchar(200) NOT NULL,
`a_text` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `answers`
ADD PRIMARY KEY (`a_id`);



ЗАпрос к БД:
SELECT * FROM `question` WHERE `topic` = 1
LEFT JOIN `answers` ON `answers`.`a_question` = `question`.`q_id`


на php если предыдущая запись q_id така я же, как в следующей, значит отобразить только вариант ответа:
if($q_id != $row['q_id']){
// показать вопрос и вариант ответа
} else {
// показать вариант ответа
}
$q_id = $row['q_id'];


Задача: нужно рандомно упорядочить вопросы и ответы, но так, чтобы ответы одного вопроса шли один за другим, например:

Вопрос 3 | ответ 4
Вопрос 3 | ответ 1
Вопрос 3 | ответ 3
Вопрос 3 | ответ 2
Вопрос 1 | ответ 2
Вопрос 1 | ответ 1
Вопрос 1 | ответ 3
Вопрос 1 | ответ 4
Вопрос 2 | ответ 3
Вопрос 2 | ответ 1
Вопрос 2 | ответ 4
Вопрос 2 | ответ 2

есть идея решить всё это на php, но може в запросе как то получится?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1610
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 27 дней
Карма: 102




так в чем проблема ? Решается все одним запросом

запрашиваете все ответы `answers`
и INNER JOIN таблицу вопросов `question`
Сортируете по номеру вопроса.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 427
Пользователь №: 18633
На форуме: 7 лет, 11 месяцев, 17 дней
Карма:




Цитата (Kusss @ 23.06.2017 - 12:23)
так в чем проблема ? Решается все одним запросом

запрашиваете все ответы `answers`
и INNER JOIN таблицу вопросов `question`
Сортируете по номеру вопроса.

И получится то же самое, номера вопроса нету, есть ID вопроса.
Если упорядочить по id вопроса, то все вопросы будут по порядку, как в базе, а мне нужно рандомно
Если просто рандомно упорядочить все записи, то ответы к одному и тому же вопросу будут разбросаны по всему тесту


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 427
Пользователь №: 18633
На форуме: 7 лет, 11 месяцев, 17 дней
Карма:




Сработал вот такой запрос:
SELECT *
FROM (SELECT * FROM `questions` WHERE `topic` = ".$id." ORDER BY RAND() LIMIT 500) AS `questions`
INNER JOIN (SELECT * FROM `answers` ORDER BY RAND()) AS `answers` on `answers`.`a_question` = `questions`.`q_id`

Но почему в запросе (SELECT * FROM `questions` WHERE `topic` = ".$id." ORDER BY RAND() LIMIT 500) обязательно нужно ставить лимит? Иначе он попросту не упорядочит рандомно?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса