[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сортировка результата
Invis1ble
Всем привет!
Допустим, есть 2 таблицы - 'table1' и 'table2'. В таблице 'table1' есть поля 'id' (primary key) и 'nickname', а в 'table2' есть поле 'uid'. 'table1' и 'table2' связаны по полям 'id' и 'uid' соответственно.
Вопрос: как отсортировать данные из 'table2' по полю 'nickname' (если это вообще возможно одним запросом) ?
Подскажите пожалуйста, кто знает!



Спустя 1 час, 4 минуты, 4 секунды (12.10.2010 - 20:58) sergeiss написал(а):
А какие свои мысли по этому поводу?

Спустя 13 минут, 21 секунда (12.10.2010 - 21:11) Invis1ble написал(а):
Да особо никаких, я в SQL плохо соображаю. Как вообще сортировка делается знаю (в смысле в пределах одной таблицы), а вот в данном случае вообще без понятия.. И в гугле не знаю как грамотно сформулировать вопрос..

Спустя 1 минута, 4 секунды (12.10.2010 - 21:13) Basili4 написал(а):
подскажу
ORDER BY wink.gif

Спустя 2 минуты, 28 секунд (12.10.2010 - 21:15) Invis1ble написал(а):
Про ORDER BY я в курсе.. Подредактировал предыдущий свой пост

Спустя 16 минут, 24 секунды (12.10.2010 - 21:31) sergeiss написал(а):
Invis1ble - давай опредлимся о порядке действий. Прежде чем сортировать, надо получить объект для сортировки. То есть, надо сделать выборку. Которую ты будешь сортировать.
Где она, эта выборка-то? Ты уж определись с этим, а потом поговорим о том, КАК это сортировать.

Спустя 12 минут, 26 секунд (12.10.2010 - 21:44) Invis1ble написал(а):
sergeiss
Что ты этим хотел сказать? Одним запросом это сделать невозможно, я правильно тебя понял?

Спустя 8 минут, 5 секунд (12.10.2010 - 21:52) arvitaly написал(а):
select * from table1 inner join table2 on id=uid order by nickname asc

Спустя 52 секунды (12.10.2010 - 21:53) Invis1ble написал(а):
sergeiss
$query = 'SELECT `id` FROM `table1` ORDER BY `nickname`';
$result = mysql_query($query, $dblink);

while ($row = mysql_fetch_assoc($result))
{
$query = 'SELECT * FROM `table2` WHERE `uid`=' . $row['id'];
$result2 = mysql_query($query, $dblink);
$data[] = mysql_fetch_assoc($result2);
}

токо таким макаром получается можно это сделать?

Спустя 1 минута, 19 секунд (12.10.2010 - 21:54) Invis1ble написал(а):
arvitaly
щас попробую

Спустя 7 минут, 17 секунд (12.10.2010 - 22:01) sergeiss написал(а):
Цитата (Invis1ble @ 12.10.2010 - 22:44)
Что ты этим хотел сказать? Одним запросом это сделать невозможно, я правильно тебя понял?

Я хотел сказать только то, что понятие "сортировка" применимо только к запросу. Не более того. Вот когда будет запрос, тогда и будет что сортировать.
То, что тебе написал arvitaly, может и не соответствовать твоим потребностям. Потому что ты пока даже не озвучил, ЧТО ЗА ДАННЫЕ ТЫ ХОЧЕШЬ ПОЛУЧИТЬ.

PS. Ну вот смотри... Допустим, ты спросишь "а как лучше пожарить грибы?". Вполне естественно будет узнать, а что же за грибы такие? И тут вдруг выяснится, что ты даже их не собрал. А не все грибы можно жарить. Не все грибы вообще съедобные. Некоторые вообще не жарят, а едят сырыми (типа "веселушек" - сам не пробовал, только слышал smile.gif).
Поэтому вполне естественным будет встречный вопрос: а ты грибы-то собери сначала, а потом уж и спрашивай.

Спустя 9 минут, 34 секунды (12.10.2010 - 22:11) arvitaly написал(а):
Invis1ble,

на будущее, для решения задачи необходимо несколько условий:

1. Исходные данные
2. Конечные данные
3. Неподходящие пути решения (необязательно, но в процессе появляется)
4. Доп. условия (optional)

У вас только структура бд, но нет ни начальных данных, ни конечных

Спустя 14 часов, 29 минут, 5 секунд (13.10.2010 - 12:40) Invis1ble написал(а):
arvitaly
Цитата
1. Исходные данные
2. Конечные данные
3. Неподходящие пути решения (необязательно, но в процессе появляется)
4. Доп. условия (optional)

не понял, к чему это нужно, вроде все условия задачи уже изложил, просто немного упростил по сравнению с реальным скриптом..

sergeiss, arvitaly
В моем случае есть такой запрос:
$query = 'SELECT *
FROM `topics` .
ORDER BY `is_fixed` DESC,'
. $sort_params . '
LIMIT '
. $offset . ',' . $limit;
где $sort_params формируется в зависимости от выбранного select'a в форме и имеет например такой вид:
$sort_params = '`updated_at` DESC';

Сортировка в данном случае идет только по полям таблицы topics, но есть еще таблица users - в ней есть поля id и nickname (users и topics связаны по полям id и author_id соответственно), так вот я хочу чтоб данные из topics сортировались по полю nickname из users.
Ну вот так, вроде все условия задачи изложил...

Спустя 5 часов, 33 минуты (13.10.2010 - 18:13) arvitaly написал(а):
Ну я же уже написал как можно сделал запрос

Спустя 14 минут, 32 секунды (13.10.2010 - 18:28) Invis1ble написал(а):
arvitaly
я сделал как ты написал - не работает. Такой запрос:
SELECT *
FROM topics INNER JOIN users on `id`=`author_id`
ORDER BY `is_fixed` DESC,`nickname` DESC
LIMIT
0,5
ошибка:
Column 'id' in on clause is ambiguous

Спустя 7 минут, 30 секунд (13.10.2010 - 18:35) arvitaly написал(а):
SELECT *
FROM topics INNER JOIN users on users.id=author_id
ORDER BY `is_fixed` DESC,`nickname` DESC
LIMIT
0,5

Спустя 7 минут, 51 секунда (13.10.2010 - 18:43) Invis1ble написал(а):
arvitaly
все, понял свою ошибку, когда перевел текст ошибки (каламбур smile.gif).. Все работате теперь,

Всем спасибо!

Спустя 49 минут, 54 секунды (13.10.2010 - 19:33) Invis1ble написал(а):
arvitaly
вот возник еще вопрос по теме, делаю такой запрос:
SELECT *,COUNT(*)
FROM topics
INNER JOIN comments ON `topic_id`=topics.`id`
ORDER BY `is_fixed` DESC,COUNT(*) DESC
LIMIT
0,5

т.е. хочу отсортировать данные из таблицы topics согласно колличеству сообщений в каждом топике (в таблице comments поле topic_id соответствует полю id в таблице topics).. Не получается, подскажи как правильно плиз

Спустя 25 минут, 21 секунда (13.10.2010 - 19:58) arvitaly написал(а):
Цитата
topics
id
1
2
3
comments
topic_id
1
1
1
2
2
3
3
3


Если вы про это, то

SELECT * FROM topics LEFT join (SELECT COUNT(*) AS cnt,topic_id FROM comments GROUP BY topic_id) as c ON c.topic_id = topics.id ORDER BY c.cnt desc

Спустя 14 минут, 19 секунд (13.10.2010 - 20:12) Invis1ble написал(а):
arvitaly
Да, ты меня правильно понял. Круто! Все работает! Еще раз спасибо!


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.