![]() |
Сортировка одним запросом
Есть таблица с фирмами два поля (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 |
Вывод с сортировкой:
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 |
Не совсем то...
Таким запросом я выведу все имена...
а как что бы по ID выводилось нужное имя |
Не совсем то...
Таким запросом я выведу все имена...
а как что бы по ID выводилось нужное имя |
Тьфу блин... :) Точно забыл еще условия связи таблиц добавить. Вот тормознул-то. Таким запросом вообще выведется не то, что надо.
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 минут долететь. :D |
Ну а чтобы еще на странички ровные порезать добавь словечко 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, время: 07:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.