У меня в таблице `operations`, есть поле `login` в котором много одинаковых значений. И есть поле `id` (оно уникально). Мне нужно упорядочить значения по полю `id` и чтобы логин НЕ ПОВТОРЯЛСЯ. Тоесть нужно достать уникальные значения `login` и упорядочить их по `id`.
Сделал запрос такого рода:
SELECT DISTINCT(login) FROM `operations` ORDER BY `id` DESC LIMIT 10
Он достает уникальные поля `login`, НО не сортирует поля по `id`!!! Пожалуйста помогите!!!!!

Спустя 9 минут, 54 секунды (18.02.2011 - 00:28) Evilsoul написал(а):
Не уверен на 100 %, но ты же поле id не выбираешь, с чего ему сортировать?
Спустя 1 минута, 34 секунды (18.02.2011 - 00:29) Invis1ble написал(а):
TrueTrAxeX
mysql_error() ничего не выдает?
mysql_error() ничего не выдает?
Спустя 2 минуты, 4 секунды (18.02.2011 - 00:31) Invis1ble написал(а):
Evilsoul
Цитата |
поле id не выбираешь, с чего ему сортировать? |
это здесь не причем. Сортировка в независимости от выборки должна выполняться
Спустя 3 минуты, 14 секунд (18.02.2011 - 00:35) TrueTrAxeX написал(а):
Вот и я тоже думаю, а он не сортирует

Спустя 1 минута, 23 секунды (18.02.2011 - 00:36) Invis1ble написал(а):
и еще, меня немного смутил твой синтаксис. на всякий случай попробуй так:
ПС. еще раз: mysql_error() ничего не выдает?
SELECT DISTINCT `login` FROM `operations` ORDER BY `id` DESC LIMIT 10
ПС. еще раз: mysql_error() ничего не выдает?
Спустя 1 минута, 37 секунд (18.02.2011 - 00:38) TrueTrAxeX написал(а):
Mysql error ничего не выдает:(
Спустя 3 минуты, 49 секунд (18.02.2011 - 00:41) Invis1ble написал(а):
странно. Выложи сюда дамп. Я проверю
Спустя 48 секунд (18.02.2011 - 00:42) TrueTrAxeX написал(а):
Попробуйте создать таблицу и в ней поле login (или любое другое) и запишите туда 3 одинаковых значения и 3 разных. Потом попробуйте упорядочить по ID, чтобы поле login не повторялось больше 1 раза. Не получится...

Спустя 1 минута, 33 секунды (18.02.2011 - 00:44) TrueTrAxeX написал(а):
http://studio-mc.ru/operations.rar - Вот дамп базы.
Спустя 1 минута, 1 секунда (18.02.2011 - 00:45) Invis1ble написал(а):
TrueTrAxeX
Цитата |
Попробуйте создать таблицу и в ней поле login (или любое другое) и запишите туда 3 одинаковых значения и 3 разных. Потом попробуйте упорядочить по ID, чтобы поле login не повторялось больше 1 раза. Не получится... |
зачем мне что-то создавать?

у меня есть под рукой таблица с похожей структурой, там запрос срабатывает корректно. Имхо, у тебя где-то в логике php-кода, который выводит значения ошибка.
В любом случае, я не экстрасенс. Нужно видеть конкретную таблицу с данными, поэтому дамп в студию

Спустя 2 минуты, 13 секунд (18.02.2011 - 00:47) TrueTrAxeX написал(а):
SELECT DISTINCT `login` FROM `operations` GROUP BY `id` ORDER BY `login` DESC LIMIT 10
А нет все равно не работает запрос:(
А нет все равно не работает запрос:(
Спустя 2 минуты, 47 секунд (18.02.2011 - 00:50) Invis1ble написал(а):
TrueTrAxeX
срабатывает корректно. у тебя где-то в php-коде ошибка
select distinct `login` from `operations` order by `id` desc limit 10
срабатывает корректно. у тебя где-то в php-коде ошибка
Спустя 2 минуты, 3 секунды (18.02.2011 - 00:52) Invis1ble написал(а):
проверь в phpMyAdmin если не веришь

Спустя 43 секунды (18.02.2011 - 00:52) TrueTrAxeX написал(а):
теперь попробуйте вывести это через while($row = mysql_fetch_array) { echo $row['login']."<br>"; }
Логины будут выводится не по ID, это точно...
Логины будут выводится не по ID, это точно...

Спустя 4 минуты, 48 секунд (18.02.2011 - 00:57) Invis1ble написал(а):
Да зачем мне что-то пробовать?
Если я знаю, что 2+2=4, мне не обязательно пользоваться калькулятором, чтобы проверить это =)
Ты полностью код покажи, как ты выводишь
Если я знаю, что 2+2=4, мне не обязательно пользоваться калькулятором, чтобы проверить это =)
Ты полностью код покажи, как ты выводишь
Спустя 20 минут, 6 секунд (18.02.2011 - 01:17) TrueTrAxeX написал(а):
function scale()
{
$max = $this->q("SELECT `login`,`id` FROM `operations` GROUP BY `login` ORDER BY `id`");
$arr = mysql_fetch_array($max);
$content.= "<table>";
do
{
$content.= "<tr><td class=\"name\">{$arr[login]}</td>";
$content.= "</tr>";
}
while($arr = mysql_fetch_array($max));
$content.= "</table>";
return $content;
}
Вот вся функция
Спустя 2 минуты, 9 секунд (18.02.2011 - 01:20) TrueTrAxeX написал(а):
Я сам удивляюсь почему так работает!!! Он не упорядочивает вывод по `id` прсото напросто! Есть уникальные логины это да! Но они не упорядочены по ID, можете сравнить сами!
Я уже незнаю, может это баг Mysql, может я глючу
Но он реально не упорядочивает по ID:(
Я уже незнаю, может это баг Mysql, может я глючу

Спустя 54 секунды (18.02.2011 - 01:20) Invis1ble написал(а):
TrueTrAxeX
Че за помесь Попова с ООП ?
Че за помесь Попова с ООП ?

Спустя 1 минута, 33 секунды (18.02.2011 - 01:22) TrueTrAxeX написал(а):
Да это я просто для наглядности сделал:)

Спустя 2 минуты, 40 секунд (18.02.2011 - 01:25) Invis1ble написал(а):
function uniqueLogins()
{
$query = 'select distinct `login` from `operations` order by `id` desc limit 10';
$res = mysql_query($query) or die(mysql_error());
$content = '<table>'
while ($user = mysql_fetch_assoc($res))
$content .= '<tr><td class="name">' . $user['login'] . '</td></tr>';
$content .= '</table>';
return $content;
}
Спустя 3 минуты, 6 секунд (18.02.2011 - 01:28) TrueTrAxeX написал(а):
Эта функция не сортирует `login` по `id` в обратном порядке. Посмотрите внимательно! Я вот это и доказываю, что данный запрос не сортирует `login` по `id`, в этом и чудо заключается!
Спустя 5 минут, 45 секунд (18.02.2011 - 01:33) YVSIK написал(а):
$max = $this->q("SELECT
а что это? ->qчто за команда?
Спустя 1 минута, 45 секунд (18.02.2011 - 01:35) TrueTrAxeX написал(а):
Цитата (YVSIK @ 17.02.2011 - 22:33) |
$max = $this->q("SELECT а что это? ->q |
За место mysql_query
Спустя 1 минута, 29 секунд (18.02.2011 - 01:37) Invis1ble написал(а):
YVSIK
Цитата |
а что это? ->q |
метод q(). Обвертка mysql_query()
Спустя 11 минут, 32 секунды (18.02.2011 - 01:48) Invis1ble написал(а):
TrueTrAxeX
Цитата |
Эта функция не сортирует `login` по `id` в обратном порядке. Посмотрите внимательно! Я вот это и доказываю, что данный запрос не сортирует `login` по `id`, в этом и чудо заключается! |
ну как это не сортирует? у меня сортирует, а у тебя - нет ????
<?php
$dbh = mysql_connect('localhost', 'admin', 'admin') or die(mysql_error());
mysql_select_db('test', $dbh) or die(mysql_error());
function uniqueLogins()
{
$query = 'select distinct `login` from `operations` order by `id` desc limit 10';
$res = mysql_query($query) or die(mysql_error());
$content = '<table>';
while ($user = mysql_fetch_assoc($res))
$content .= '<tr><td class="name">' . $user['login'] . '</td></tr>';
$content .= '</table>';
return $content;
}
echo uniqueLogins();
?>
выдает:
topor
traxex865
traxex864
В чем проблема?
Спустя 3 минуты, 51 секунда (18.02.2011 - 01:52) TrueTrAxeX написал(а):
А все вроде заработало, спасибо!
Спустя 4 минуты, 15 секунд (18.02.2011 - 01:56) Invis1ble написал(а):
блин, жесть =)
перед тем как говорить "Не работает!" нужно наверно проверить, да?
перед тем как говорить "Не работает!" нужно наверно проверить, да?

Спустя 2 минуты, 29 секунд (18.02.2011 - 01:59) TrueTrAxeX написал(а):
И можно вопрос напоследок! Попробуйте упорядочить вот эту базу по такому же методу http://studio-mc.ru/operations.sql.zip у меня заглючило:( Там сначала по идее должен идти логин traxex865, а потом topor, а сначала идет topor
Вот про это я и говорил)

Спустя 13 минут, 18 секунд (18.02.2011 - 02:12) Invis1ble написал(а):
TrueTrAxeX
OMG!
OMG!
Цитата |
Там сначала по идее должен идти логин traxex865, а потом topor |
по чьей идее? все правильно сортирует. Вот запусти такой код:
<?php
$dbh = mysql_connect('localhost', 'admin', 'admin') or die(mysql_error());
mysql_select_db('test', $dbh) or die(mysql_error());
function uniqueLogins()
{
$query = 'select distinct `login`, `id` from `operations` group by `login` order by `id` desc limit 10';
$res = mysql_query($query) or die(mysql_error());
$content = '<table>';
while ($user = mysql_fetch_assoc($res))
{
$content .= '<tr>';
$content .= '<td class="name">' . $user['id'] . '</td>';
$content .= '<td class="name">' . $user['login'] . '</td>';
$content .= '</tr>';
}
$content .= '</table>';
return $content;
}
echo uniqueLogins();
?>
Надеюсь, ты поймешь в чем дело....
Спустя 2 минуты, 37 секунд (18.02.2011 - 02:15) Invis1ble написал(а):
Выборка ведь идет с начала таблицы! И вобще, какая-то странная у тебя сортировка - по id. Судя по всему у тебя алгоритм хромает.
Спустя 11 часов, 4 минуты, 45 секунд (18.02.2011 - 13:20) TrueTrAxeX написал(а):
А мне нужно чтобы выборка шла с конца таблицы
Если поможете как это можно реализовать, то вообще супер будет!

Спустя 4 часа, 43 минуты, 58 секунд (18.02.2011 - 18:03) Invis1ble написал(а):
Ты объясни толком, зачем тебе такая сортировка понадобилась. Наверняка есть более грамотное решение твоей задачи.
Спустя 21 минута, 37 секунд (18.02.2011 - 18:25) inpost написал(а):
`id` DESC
Спустя 4 минуты, 42 секунды (18.02.2011 - 18:30) Invis1ble написал(а):
inpost
не, там все несколько тоньше. да и order by id desc там и так в запросе стоит
не, там все несколько тоньше. да и order by id desc там и так в запросе стоит