форум вебмастеро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


Ламерьё! Это какой код должен быть?
Насчёт комбинирования, это да, настройки сайта(форума, блога) лучше всего именно в файле хранить. Можно даже и записывать сразу в виде массива, или просто переменных.

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2010
Powered by miniBB-gzipper. Original size:47330, gzipped size:12085

Mp3 Download || Мир Спанч боба
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]