X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> sql запрос
spektr08
spektr08
Topic Starter сообщение 20.8.2012, 10:47; Ответить: spektr08
Сообщение #1


Всем привет!У меня вот такой вопрос есть таблица :

id name region
1 Вася Одесса
2 Петя Черкассы
3 Оля Черкассы
4 Витя Киев


Мне нужно отсортировать таблицу так чтоб сначала были поля где регион Черкассы а потом уже не важно какой регион будет?Как написать запрос?


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 20.8.2012, 11:54; Ответить: Muxa_hb
Сообщение #2


1 запрос
SELECT * FROM `table` Where `region`='Черкассы' ORDER BY `id`

2 запрос
SELECT * FROM `table` Where `region` <>'Черкассы' ORDER BY `id`
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
spektr08
spektr08
Topic Starter сообщение 20.8.2012, 12:24; Ответить: spektr08
Сообщение #3


А все одним запросом можно сделать?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
spektr08
spektr08
Topic Starter сообщение 20.8.2012, 16:05; Ответить: spektr08
Сообщение #4


Я так понял что нельзя :))


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 20.8.2012, 21:28; Ответить: Apay
Сообщение #5


можно добавить дополнительное поле и сортировать по нему
SELECT *, IF(`region`='Черкассы',0,1) AS rgnchrk FROM `table` ORDER BY rgnchrk, `id`
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
zabmix
zabmix
сообщение 22.8.2012, 23:30; Ответить: zabmix
Сообщение #6


Чтоб новую тему не создавать, продолжу эту.

задача собрать все ID дочерних категорий от родительского.
Сейчас решается это таким способом:

[PHP]
$sid = '11';
function cat($id, $sub=false) {
global $db;
$str = '';
$query = $db->query("SELECT id, cat_id FROM `".db_prefix."catalog` WHERE cat_id = '$id'");
while($r = $query->fetch_assoc()) {
$str .= $r['id'].','.cat($r['id'], true);
}
return $str;
}
echo trim($sid.','.cat($sid), ',');
[/PHP]

Запросов в БД будет куча, если очень много дочерних категорий, можно ли выполнить такую рекурсию одним запросом, чтоб получить цикл уже готовых всех подкатегорий?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 22.8.2012, 23:38; Ответить: alexdrob
Сообщение #7


Если бы было всё так просто, не было бы придумано модели http://en.wikipedia.org/wiki/Nested_set_model
:)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
zabmix
zabmix
сообщение 22.8.2012, 23:53; Ответить: zabmix
Сообщение #8


А как насчет такого?
[PHP]$sid = '11';[/PHP]
SELECT * FROM `".db_prefix."catalog` as `c1` INNER JOIN `".db_prefix."catalog` as `c2` ON `c1`.id = `c2`.cat_id WHERE c1.cat_id = '$sid' or c2.cat_id IN(c1.id)


Все бы ничего, но вот он выдает записи только в которых есть дочерние категории, если отталкиваться от $sid = 11 и у тех дочерних каталогов у которых не будет своих дочерних каталогов они выдаваться в результат не будут...) блин, как это избежать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
zabmix
zabmix
сообщение 23.8.2012, 0:04; Ответить: zabmix
Сообщение #9


alexdrob, что будет разумнее использовать в таком случае? Если говорить о скорости?
Nested set model или функция в цикле на php где сотни запросов?)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 23.8.2012, 0:16; Ответить: alexdrob
Сообщение #10


(zabmix @ 23.8.2012, 02:53) *
в которых есть дочерние категории

а если left join?


(zabmix @ 23.8.2012, 03:04) *
Если говорить о скорости?

Если вставка редкая - то nested set, так как там при вставке будет перезапись всех элеметнов. Это подходит для меню, для категорий. Но если вставка туда каждую минуту, то Уже зависит от количества данных и их размеров :)

Посмотрите explain разных запросов, там будет видно сколько и каких ресурсов он задействует, запрос может быть один, но сложный и тормозить больше чем пять но простых :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Запрос на бесплатные полезности
7 Tia2 1835 23.3.2024, 11:27
автор: Alexand3r
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыБаза товаров (opencart) SQL 70к+ товаров
Инструменты для дома, строительное и производственное оборудование
5 getdump 5607 1.9.2021, 2:04
автор: WebSniper
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыWeb-разработка (C++/PHP/SQL/JS/Bootstrap). HighLoad проекты.
0 DF™ 1420 28.7.2020, 13:24
автор: DF™
Открытая тема (нет новых ответов) Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты
Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов
4 DFService 3336 8.4.2020, 18:02
автор: DFService
Открытая тема (нет новых ответов) Куплю сайты, внутри темы подробный запрос
3 PticaKate 3622 12.11.2019, 16:22
автор: 0pium


 



RSS Текстовая версия Сейчас: 28.3.2024, 16:56
Дизайн