форум вебмастероff на AlfaSpace.NET |
база знаний хостинга |
реактивный бесплатный хостинг |
правила форума
| Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ ° |
| Форум вебмастеров на AlfaSpace.NET / Создание сайта / Мускл |
| Автор | Сообщение |
| 4mlr Участник 369 |
# Дата: 11 Окт 2008 12:05 как узнать значение поля строки удовлетворяющей условию какому-то, но только нормально, а то у меня сейчас как-то каряво... $xxx=mysql_fetch_array(mysql_query('SELECT `value` FROM `forum` where (`file`="1")&&(`key`="message")')); $value=$xxx['value']; |
| acsid Alfa Guru 2465 |
# Дата: 11 Окт 2008 18:20
$xxx=mysql_query("SELECT value FROM `forum` WHERE file='1' AND key='message'");
if (mysql_num_rows($xxx)!=0){
while(list($str) = mysql_fetch_row($xxx)){
$value=$str;
}
} |
| 4mlr Участник 369 |
# Дата: 12 Окт 2008 20:51 Ещё вопросик: а мускл вначале выбирает, а потом сортирует или сортирует, а потом выбирает? |
| gl_SPICE Участник 1791 |
# Дата: 12 Окт 2008 21:11 а мускл вначале выбирает, а потом сортирует или сортирует, а потом выбирает?
Не представляю, как можно сначала отсортировать, а потом выбрать Это при каждой выборке производить сортировку всей таблицы что ли? А если в таблице 500 000 записей? |
| madman Участник 319 |
# Дата: 13 Окт 2008 12:00 4mlr, если тебя беспокоет, что будет при запросе типа SELECT name, pass FROM user ORDER BY name LIMIT 5 то такое запрост выдаст 5 человек которые идут первыми в алфавитном порядке. ТОесть мускул сначала выберет потом отсортирует, а уж тока потом приминит LIMIT |
| 4mlr Участник 369 |
# Дата: 13 Окт 2008 17:00 ° Поправил: 4mlr madman спасибо.
и ещё можно получить результат, потом подсчитать количество строчек, а потом обLimitit? |
| acsid Alfa Guru 2465 |
# Дата: 14 Окт 2008 20:53 ° Поправил: acsid и ещё можно получить результат, потом подсчитать количество строчек, а потом обLimitit?
Можно,но лучше делать всё одним запросом, тогда не нужно доставать всё содержание таблицы. Запрос по условию с LIMIT намного легче чем обычный запрос с последующей сортировкой результатов. |
| gl_SPICE Участник 1791 |
# Дата: 15 Окт 2008 01:56 Ммм... Раз пошла такая пьянка Тоже тут спрошу.
Вот есть такая таблица: cat title points 12,8,2 Quake 10 000 В 'cat' я храню категории записи через запятую. Как мне вытащить все записи с категорией "2"? WHERE `cat` LIKE '%2%' ведь не покатит, под это правило и "12" подойдет, и вообще любое число с двойкой! Как вариант - можно хранить эти категории как (12)(8)(2) или еще как-то похоже, но может просто я просто не догоняю, как это можно сделать в случае с запятыми? |
| madman Участник 319 |
# Дата: 15 Окт 2008 12:06 gl_SPICE, лутше храни так cat title points 12 Quake 10 000 8 Quake 10 000 2 Quake 10 000 |
| gl_SPICE Участник 1791 |
# Дата: 15 Окт 2008 12:34 madman, это будет полный пэ, ибо у меня сейчас в БД 25 000 записей, и в среднем по 3 категории у каждой записи, следовательно, база увеличится ВТРОЕ, но это увеличение НИКАКОЙ дополнительной пользы не принесет, только дополнительный гемор при обновлении Так это не решается ![]() |
| madman Участник 319 |
# Дата: 15 Окт 2008 16:01 gl_SPICE, мое дело предложить... Вобщето связь "много-ко-многим" реализуется с помощью дополнительное таблички. И опреция выборки по числовым значением намного быстрее LIKE '%'. Я б тебе предложил такую структуру данных: Таблица: games // сущность id title points Таблица: category // сущность id title Таблица: links // связь "много-ко-многим" id categoryId gameId И тагда можна без изврата получать необходимые данные и работать будет проще |
| 4mlr Участник 369 |
# Дата: 15 Окт 2008 22:46 gl_SPICE LIKE '%,%,2' а так не подойдёт?? |
| gl_SPICE Участник 1791 |
# Дата: 16 Окт 2008 01:19 а так не подойдёт?
Конечно нет
связь "много-ко-многим"
Теперь буду считать себя гением Реально работает Теперь я знаю, что такое JOIN, и как им пользоваться ![]() |
| madman Участник 319 |
# Дата: 16 Окт 2008 11:57 gl_SPICE, если ты все это знаеш, то зачем базу "раком" построил? |
| gl_SPICE Участник 1791 |
# Дата: 16 Окт 2008 12:49 если ты все это знаеш
Теперь знаю Базу перестроил, все работает зашибись ![]() |
| acsid Alfa Guru 2465 |
# Дата: 16 Окт 2008 13:44 ° Поправил: acsid Хм очень интересно, никогда ещё не использовал JOIN... делал неврероятные циклы.Век живи, век учись , пойду запросы переделывать |
| acsid Alfa Guru 2465 |
# Дата: 16 Окт 2008 14:29 ° Поправил: acsid А как сделать SELECT сразу из двух таблиц, с проверкой по параметру ? Допустим одна таблица категорий: ID category 1 Cat1 2 Cat2 3 Cat3 4 Cat4 Вторая талица подкатегорий СatID SubCatId SubCat 1 11 Sub1 1 22 Sub2 3 33 Sub3 3 44 Sub4 Как можно одним запровом при усливии совпадения ID=СatID (это ясно,через JOIN) вытащить ID category и СatID SubCatId SubCat из разных табиц ? |
| madman Участник 319 |
# Дата: 16 Окт 2008 14:55 acsid, что-то я ничего не понял. Если ты хочеш сделать выборку по дереву, то это реализуется совсем по другому. А есть ещё более мощный механизм Nested Sets (Вложеные множества) |
| acsid Alfa Guru 2465 |
# Дата: 16 Окт 2008 17:28 ° Поправил: acsid Если ты хочеш сделать выборку по дереву
Да именно это я и пытаюсь сделать.Сайт в профиле, там есть деревовидное меню навигации по каталогу.Сейчас оно реализовано двумя запрсами к б.д.: 1.Вначале SELECT из одной таблицы, для того чтобы достать ID категории. 2.Потом второй запрос ,достаёт подкатегории из другой таблицы с помощью ID из шага №1. Теперь, Вы меня натолкнули на мысль, что эти два запроса можно объеденить в один ![]() |
| madman Участник 319 |
# Дата: 16 Окт 2008 18:23 acsid, я ща пишу для себя клас для работы с Nested Sets. Не с нуля пишу, а переписую под себя вот это. Хотя не знаю, нужно ли оно тебе, если у тебя максимальная глубина =2 Можно просто пользоватся таблицей вроде такой id patentId Title 1 0 Title1 2 0 Title2 3 1 Title1-1 4 1 Title1-2 |
| gl_SPICE Участник 1791 |
# Дата: 16 Окт 2008 18:51 acsid, вот как раз как madman я у себя категории реализовал, только у меня еще поле "nice" есть, это для ЧПУ, чтобы ссылки были не http://www.example.com/21/465/ а http://www.example.com/soft/games/. Прелесть хранения категорий так, как описал madman в том, что у тебя может быть неограниченное количество вложенных категорий, так как parentID будет содержать номер любой другой категории или подкатегории. Мне кажется такая запись лучше, чем отдельно заводить таблицы для категорий и подкатегорий, а потом их джоинить в одном запросе. 1.Вначале SELECT из одной таблицы, для того чтобы достать ID категории.
2.Потом второй запрос ,достаёт подкатегории из другой таблицы с помощью ID из шага №1. То есть, ты первый селект обрабатываешь PHP, получаешь ID и делаешь второй селект? |
| madman Участник 319 |
# Дата: 16 Окт 2008 19:17 gl_SPICE, вот када я допишу клас для Nested Sets (Вложеные множества), тада ваще будет супер. Там тако-о-ой функционал заложен, что просто жуть. ![]() |
| gl_SPICE Участник 1791 |
# Дата: 16 Окт 2008 20:38 madman, я двиг для сайта самопальный пишу, чтобы нагрузку максимально снять, особенно с БД. Перед этим смотрел движки готовые, нашел парочку подходящих, посчитал, сколько запросов идет на каждую страницу: от 20 до 117 - я ахуе был Меня 10-то грузят с моей посещаемостью (правда на шареде), а тут главная генерится в 117 запросов! |
| Roler USA Hater 1341 |
# Дата: 17 Окт 2008 10:17 gl_SPICE Шо за движки? О_О У меня свой, на мой взгляд вполне приличный, с некоторыми причиндалами генерит 6 запросов на главной. |
| madman Участник 319 |
# Дата: 17 Окт 2008 11:18 Главную нужно кешировать, если не полностью, то хоть частично. А для навигации и другой служебной инфы не нужно вылазить за 5-6 запросов, при том, что они должны быть легкими. Так вот, при использовании Nested Sets (Вложеные множества) можна троить очень простые и в то же время очень функционалные запросы. Могу привести примеры. |
| gl_SPICE Участник 1791 |
# Дата: 17 Окт 2008 18:18 Roler, вот тот, который 117 запросов для главной делал я уже не помню, тестировал его впервые. А вот все остальные достаточно популярные двиги: Wordpress, DLE, Joomla, HostCMS, UMI, еще какие-то были... |
| acsid Alfa Guru 2465 |
# Дата: 17 Окт 2008 19:12 Главную нужно кешировать, если не полностью, то хоть частично.
А для навигации и другой служебной инфы не нужно вылазить за 5-6 запросов, при том, что они должны быть легкими. Я бы предложил комбинировать файлы и БД. Часть редко редактируемой информации может находится в файлах.Из них доставать быстрее и легче. |
| gl_SPICE Участник 1791 |
# Дата: 17 Окт 2008 21:54 Roler, смотри HTML-код на http://modx.ru/ в самом низу ![]() |
| madman Участник 319 |
# Дата: 20 Окт 2008 11:58 » gl_SPICE Roler, смотри HTML-код на http://modx.ru/ в самом низуужос!!! 150 запросов.... |
| Roler USA Hater 1341 |
# Дата: 20 Окт 2008 14:35 Ламерьё! Это какой код должен быть? Насчёт комбинирования, это да, настройки сайта(форума, блога) лучше всего именно в файле хранить. Можно даже и записывать сразу в виде массива, или просто переменных. |
|
Powered by miniBB forum software © 2001-2010
Powered by miniBB-gzipper. Original size:47330, gzipped size:12085 |