Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую всех! Необходимо осуществить сортировку в SQL запросе по нескольким полям. То есть по по трем итак сортируется:
SELECT * FROM prod ORDER BY saleprice DESC, img DESC, price DESC - вначале распродажные товары, потом товары с изображениями, все оставшиеся по цене.
Нужно сделать так, чтобы товары с изображениями(второе - поле img DESC) сортировались еще и по цене.
Неактивен
Неактивен
Добрый вечер всем. у меня вообще ситуация трудная, объяснить даже сложно, в общем попробую.
У меня есть 4 таблицы в бд. 1 и 2 одинаковые между собой, но отличаются от 3 и 4. И так же 3 и 4 одинаковые между собой и отличаются от 1 и 2.
Сначала я делаю запрос на выборку нужных мне данных методом SELECT с использованием UNION по 1 и 2 таблицам.
Потом получаю нужные данные (например id и numbers) и уже делаю следующий запрос так же с использованием UNION только уже к 3 и 4 таблицам по полученным мною данным ( речь идет о id и numbers ).
Всё...вытащил данные из 3 и 4 таблицы по id и numbers предварительно их сортируя по id и numbers для того что бы товары новые были всегда сверху...и что я вижу....
7
6
3
2
1
4
5
Я не могу понять как такое может быть. По идее так получается только в том случае если бы у меня была не 1 таблица в php файле а 2. Тогда я бы еще мог предположить что они конфликтуют между собой и тут точно нужен UNION...ну ...как же так.. Даже и он не помог, и сортировку делал так ORDER by id DESC, numbers DESC.
И кстати заметил изменения когда сортирую не в 3 и 4 таблице, а когда еще и 1 и 2...тогда расположение меняется, но опять же не так как хотелось ... мне нужно что б было так:
10
9
8
7
6
5
4
3
2
1
естественно методом DESC
Подскажите пожалуйста...
Отредактированно in9emix (23.05.2012 17:56:45)
Неактивен
Хм.
select id from t_1018_1 union select id from t_1018_2 order by id desc;
Даёт корректный результат, отсортированный по id по убыванию.
Неактивен
К сожалению не получается так. Они сортируются, но ведут себя как будто у меня в .php страничке 2 таблицы а не одна.
Когда ставлю сортировку по 1ой и 2ой таблице то выглядит так:
6
5
4
1
2
3
Когда не трогаю 1ую и 2ую и сортирую только 3ую и 4ую, выглядит так:
4
5
6
3
2
1
А когда сортирую как вы предложили то они как будто перемешиваются. получается так:
4
3
6
5
2
1
Я не знаю что делать, по логике все должно же ведь работать...
Неактивен
Приводите непосредственно запросы, которые пишете, тогда легче будет понять в чем проблема.
А когда сортирую как вы предложили то они как будто перемешиваются. получается так:
Приведите дампы таблиц, Ваш запрос, желаемый результат и получившийся результат.
Неактивен
Я упростил запрос до 1 таблицы что бы вам легче было разобраться. Дальше сам смогу, мне главное эту проблему решить. И так:
Есть таблица в бд friends123 которая хранит в себе список подружившихся пользователей.
Если посмотреть на скриншоте ниже то можно увидить что слева пользователи которые предложили дружбу, а справа те кто принял её.
А данном случае я пользователь vika предложил дружбу 3ем людям (sasha, lera, dima).
И выводиться всё это таким образом:
И вот дальше идет сложность, как только мои друзья (sasha, lera или dima) добавят к себе кого нибудь в друзья, происходит вот что:
Тем временем в таблице все нормально:
Далее та же проблема, решил для примера показать следующее:
И вот сам код:
$result3 = mysql_query("SELECT * FROM friends123 WHERE i_id='".$_SESSION['id']."' ORDER by id DESC",$db);
$myrow3 = mysql_fetch_array($result3);
do {
$result4 = mysql_query("SELECT * FROM friends123 WHERE my_friend_id='$myrow3[my_friend_id]' ORDER by id DESC",$db);
$myrow4 = mysql_fetch_array($result4);
do { echo "Нумерация: $myrow4[id] Пользователь $myrow4[i_am] предложил дружбу пользователю $myrow3[my_friend]<br>"; }
while ($myrow4 = mysql_fetch_array($result4));
}
while ($myrow3 = mysql_fetch_array($result3));
И структура:
И что только уже не делал, сортировки в обратном порядке я не добился...
Отредактированно in9emix (24.05.2012 13:24:36)
Неактивен
deadka, вы не нашли в чем проблема?
Неактивен
Ваша проблема ИМХО не с MySQL. Вы не привели запрос, который возвращает некорректный с Вашей точки зрения результат, так что мне трудно даже что-то подсказать. Абстрагируйтесь временно от php, тогда будет проще.
Неактивен
Разобрался ^^
Неактивен