Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Базы данных

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 17.12.2001, 18:36
evgenz вне форума Посмотреть профиль Отправить личное сообщение для evgenz Посетить домашнюю страницу evgenz Найти все сообщения от evgenz
  № 1  
evgenz

Регистрация: Feb 2001
Адрес: Moscow
Сообщений: 223
Отправить сообщение для evgenz с помощью ICQ
По умолчанию Сортировка одним запросом

Есть таблица с фирмами два поля (ID Name)
1 Nissan
2 Ford
3 Жигули
...
Есть таблица с типами (ID Name)
1 Седан
2 Кабриолет
...
Есть таблица цен (ID Id_firm Id_type Price)
1 1 2 $4000
2 5 1 $30000

Надо вывести этот прайс сортируя сначала по фирмам потом по типу потом по цене
да плюс еще разбить на станицы

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

Можно одним сделать


все на mySQL

Старый 18.12.2001, 16:16
Geoserg вне форума Посмотреть профиль Отправить личное сообщение для Geoserg Найти все сообщения от Geoserg
  № 2  
Geoserg

Регистрация: Mar 2001
Адрес: Петрозаводск
Сообщений: 44
Вывод с сортировкой:

SELECT F.Name, T.Name, P.Price
FROM FIRMATABLE F, TYPESTABLE T, PRICETABLE P
ORDER BY F.Name, T.Name, P.Price

Один совет - в качестве цены храни числовое значение, добавь поле код валюты, ну и табличку с кодами валюты. Можно было бы привести их к у.е., чтобы можно было легко пересчитать в любую другую валюту.

А разбивать на странички нужно скриптом. А в запросе использовать опции Limit, Offset. Лень писать полностью, так что почитай доки по мускулу, там все просто.

Удачи. Geoserg

Старый 18.12.2001, 16:29
evgenz вне форума Посмотреть профиль Отправить личное сообщение для evgenz Посетить домашнюю страницу evgenz Найти все сообщения от evgenz
  № 3  
evgenz

Регистрация: Feb 2001
Адрес: Moscow
Сообщений: 223
Отправить сообщение для evgenz с помощью ICQ
По умолчанию Не совсем то...

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

Старый 18.12.2001, 16:34
evgenz вне форума Посмотреть профиль Отправить личное сообщение для evgenz Посетить домашнюю страницу evgenz Найти все сообщения от evgenz
  № 4  
evgenz

Регистрация: Feb 2001
Адрес: Moscow
Сообщений: 223
Отправить сообщение для evgenz с помощью ICQ
По умолчанию Не совсем то...

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

Старый 19.12.2001, 15:17
Geoserg вне форума Посмотреть профиль Отправить личное сообщение для Geoserg Найти все сообщения от Geoserg
  № 5  
Geoserg

Регистрация: Mar 2001
Адрес: Петрозаводск
Сообщений: 44
Тьфу блин... Точно забыл еще условия связи таблиц добавить. Вот тормознул-то. Таким запросом вообще выведется не то, что надо.

SELECT F.FirmaName, T.FirmaName, P.Price
FROM FIRMATABLE F, TYPESTABLE T, PRICETABLE P
WHERE (P.ID_FIRM=F.ID)
AND (P.ID_TYPE=P.ID)
ORDER BY F.Name, T.Name, P.Price

Так выведется весь список, который нужен. То же самое можно прописать JOIN'ами:

SELECT FirmaName, TypeName, Price
FROM PriceTable LEFT JOIN FirmaTable ON PriceTable.Firma_ID=FirmaTable.ID LEFT JOIN PriceTable.Type_ID=TypesTable.ID
ORDER BY FirmaName, TypeName, Price

Хотя насчет этого я не уверен. Я JOIN'ы не использую, проще прописать все условия в секции WHERE, ИМХО конечно.

Но если интересно почитай MySQL manual главы 6.4.x. Там все есть.

--------------------------------------
а как что бы по ID выводилось нужное имя
--------------------------------------

Какое имя? И по какому ID? У тебя их тут 2 - имя фирмы, имя марки.

Удачи.
Geoserg
P.S. И эта... Почитай мануал-то. Лучше день потерять, потом за 10 минут долететь.

Старый 19.12.2001, 15:21
Geoserg вне форума Посмотреть профиль Отправить личное сообщение для Geoserg Найти все сообщения от Geoserg
  № 6  
Geoserg

Регистрация: Mar 2001
Адрес: Петрозаводск
Сообщений: 44
Ну а чтобы еще на странички ровные порезать добавь словечко LIMIT. Вот так.

SELECT F.FirmaName, T.FirmaName, P.Price
FROM FIRMATABLE F, TYPESTABLE T, PRICETABLE P LIMIT x,y
WHERE (P.ID_FIRM=F.ID)
AND (P.ID_TYPE=P.ID)
ORDER BY F.Name, T.Name, P.Price

Выведет тебе записи с (x+1) по (x+y) включительно. А x,y скриптом формируй.

Успехов.
Geoserg

Создать новую тему   Часовой пояс GMT +4, время: 01:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


Часовой пояс GMT +4, время: 01:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.