Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RFpro.ru: Базы данных MySQL


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гуревич Александр Львович
Статус: Профессионал
Рейтинг: 4998
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2483
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2228
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Базы данных / MySQL

Номер выпуска:468
Дата выхода:13.06.2011, 00:00
Администратор рассылки:Victor Pyrlik (Мастер-Эксперт)
Подписчиков / экспертов:291 / 136
Вопросов / ответов:1 / 2

Вопрос № 183545: Здравствуйте! У меня возникли сложности с таким вопросом: Необходимо составить запрос по двум таблицам "категории" и "фото" ,что бы в итоговой таблице зыписи сортировались по категории и в каждой категории по порядку вывода (к...



Вопрос № 183545:

Здравствуйте! У меня возникли сложности с таким вопросом:
Необходимо составить запрос по двум таблицам "категории" и "фото" ,что бы в итоговой таблице зыписи сортировались по категории и в каждой категории по порядку вывода (колонка order) например : фото из таблицы "фото" с id_foto 145,198,152 относятся к 12-й категории необходимо ,что бы id_foto 12-й категории вывелись в следующем порядке -согласно значениям в колонке order – 198, 145, 152 В запросе необходимо использовать конструкцию SQL_CALC_FOUND_ROWS . Используется MySQL сервер Apache.
Спасибо.

Категории

id category
1 1
2 3
3 5
4 8
5 3
6 3
7 5
8 12
9 3


Фото

id_foto category order
135 1 0
111 1 1
114 8 1
101 5 2
145 12 2
198 12 0
152 12 3
187 5 4
114 3 4


Итого вая таблица -которая должна получится в результате запроса

id_foto category order
135 1 0
111 1 1
114 3 4
101 5 2
187 5 4
114 8 1
198 12 0
145 12 2
152 12 3




Отправлен: 07.06.2011, 23:21
Вопрос задал: Dima1967 (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Коцюрбенко Алексей aka Жерар (Профессор) :
Здравствуйте, Dima1967!

Запрос будет иметь следующий вид

Код (SQL):
SELECT SQL_CALC_FOUND_ROWS id_foto, category, `order` FROM "фото" ORDER BY category, `order`


Здесь "фото" - имя таблицы фотографий, имя поля `order` взято в обратные кавычки, чтобы не было совпадения с ключевым словом ORDER.

Есть, правда, некоторые неясности (или я не совсем понял вопрос):

1. Для чего в запросе необходимо использовать конструкцию SQL_CALC_FOUND_ROWS, если не предполагается ограничение LIMIT и последующий запрос SELECT FOUND_ROWS()? Или Вы про них не упомянули?

2. Для чего нужна таблица Категории, если таблица Фото никак с ней не связана?

Ответ отправил: Коцюрбенко Алексей aka Жерар (Профессор)
Ответ отправлен: 08.06.2011, 04:11
Номер ответа: 267631
Россия, Томск
Тел.: 8-923-411-36-58

Оценка ответа: 5
Комментарий к оценке:
1."...Для чего в запросе необходимо использовать конструкцию SQL_CALC_FOUND_ROWS..." - я про это не упомянул-но это всё используется для счётчика страниц.
2. Она не нужна - просто мне не надо было ночью отправлять вопрос ,а утром, перечитать его на свежую голову и отправить))) - ещё раз большое спасибо,у меня вызвала сложность группировка - не знал,что в order by - можно перечислить всё через запятую.

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267631 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Kosmos Kosmonaft (2-й класс) :
    Доброе время суток, Dima1967!

    Я так понимаю у вас есть три таблицы `category`, `photo` и `new_photo`. Таблицы выглядят примерно так:

    `category` имеет `id` и`category`
    `photo` имеет ``id_foto`, `category` и `order`
    `new_photo` имеет ``id_foto`, `category` и `order` и пока пустая.

    Вам необходимо отсортировать две таблицы указанным образом и сохранить в `new_photo`. Для этого необходимо воспользоваться следующим запросом:

    Код (SQL):
    INSERT INTO `new_photo`
          SELECT SQL_CALC_FOUND_ROWS DISTINCT
            photo.id_foto, photo.category, photo.order
          FROM
            photo INNER JOIN category ON category.category = photo.category
          ORDER BY
            photo.category ASC, photo.order ASC
    


    Отсортированные данные будут занесены в пустую таблицу.

    DISTINCT в данном случае очень важен, в ином случае мы получим повторяющиеся строки.

    Удачи!
    Активировал BBCode
    -----
    ∙ Отредактировал: Лысков Игорь Витальевич (Старший модератор)
    ∙ Дата редактирования: 09.06.2011, 09:34 (время московское)

    Ответ отправил: Kosmos Kosmonaft (2-й класс)
    Ответ отправлен: 09.06.2011, 01:43
    Номер ответа: 267650

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267650 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное