Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Mysql запрос
цитата
09/11/08 в 17:18
 Sterx
имеется поле price в таблице table1
значение поля может быть как цена в рублях, так и в баксах
имеется поле valute в таблице table2
талицы связаны по table1.2_loc=table2.loc
если просто писать order by price
работать будет неправильно, поскольку цены в разных валютах, анеобходимо сделавть не просто сортировку по цене, а постраничную сортировку
select * table1 left join table2 on (table1.2_loc=table2.loc) where ......условия..... order by price limit 10,20
как сделать? лепить условие в order by
цитата
09/11/08 в 17:46
 Corex
Примерно вот так должно работать:
Код:
select *,
if(table2.valute='usd', table1.price*27, table1.price) as final_price
from table1
left join table2 on (table1.2_loc=table2.loc)
where ......условия.....
order by final_price limit 10,20


Смотрим что за валюта в table2, если бакс, то умножаем по курсу, если рупь - отдаём что есть. Сортируем по итоговому результату и на страницы всё будет разбито как надо.
цитата
09/11/08 в 20:11
 Sterx
спасибо, буду пробовать
цитата
09/11/08 в 22:48
 Alexs
чет мне подсказывает что надо просто провести нормализациию таблиц
http://ru.wikipedia.org/wiki/1NF
Первая нормальная форма (1NF)
Вторая нормальная форма (2NF)
Третья нормальная форма (3NF)
хятя моги и ошибаца
цитата
09/11/08 в 23:14
 Alexs
решение просто
сперва выбераеш рубли потом баксы умнажая их покурсу

в итоге получаем 2 таблиы которые обединяем через UNION
после чего order by

(SELECT выбераем рубли ) UNION (SELECT выбераем $*.n ) order by;

UNION Syntax
http://dev.mysql.com/doc/refman/5.0/en/union.html
цитата
10/11/08 в 00:13
 Sterx
Corex более симпатично подсказал, мне как раз непонятно было куда условие вписалось бы


Эта страница в полной версии