imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 15.08.2004, 03:41     # 1
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Два вопроса по MYSQL

1. Как узнать, сколько queries было запущено на данной странице?
2. Если я хочу сделать выборку инфы из одной таблицы, но упорядочить по качеству значения из другой таблицы возможно ли это? Пояснение:

$DB_site->query("SELECT * FROM portal_articles ORDER BY ----TUT PROBLEMA ----")

В таблице есть столбик sectionid

Есть таблица portal_sections со столбиками sectionid, sectiontitle.
Так вот, можно ли использую только тот первый query упорядочить результат по sectiontitle из второй таблицы?
Psionic Vision вне форума  
Старый 15.08.2004, 06:11     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Как узнать, сколько queries было запущено на данной странице?
Проще всего заменить mysql_query на my_mysql_query и внутри реализовать инкремент глобальной переменной.
Цитата:
Если я хочу сделать выборку инфы из одной таблицы, но упорядочить по качеству значения из другой таблицы возможно ли это?
Толком не понял что ты хочешь, но думаю ты имеешь ввиду LEFT JOIN.

Последний раз редактировалось RaZEr; 15.08.2004 в 06:39.
RaZEr вне форума  
Старый 15.08.2004, 13:12     # 3
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
Neo:
2. Если я хочу сделать выборку инфы из одной таблицы, но упорядочить по качеству значения из другой таблицы возможно ли это? Пояснение:

Выбираеш поля из двух таблиц и устанавливаеш порядок по любому из выбранных полей.
EvroStandart вне форума  
Старый 15.08.2004, 16:33     # 4
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
SamJa
Примерчик плз.
Как я могу выбрать поля их ДВУХ таблиц?

И где я могу почитать про LEFT JOIN?
Psionic Vision вне форума  
Старый 15.08.2004, 17:36     # 5
Merlin Cori
Moderator
 
Аватар для Merlin Cori
 
Регистрация: 29.04.2002
Адрес: Moscow
Пол: Male
Сообщения: 2 980

Merlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБог
Merlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБог
Наверное здесь
_http://www.mysql.ru/docs/man/LEFT_JOIN_optimisation.html
__________________
Есть две бесконечные вещи, Вселенная и глупость.
Впрочем, на счет Вселенной, я не уверен



Вклад IMHO.WS в медицину и науку
Присоединяйтесь!!!!!
Merlin Cori вне форума  
Старый 15.08.2004, 17:36     # 6
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
И где я могу почитать про LEFT JOIN?
mysql.org
RaZEr вне форума  
Старый 15.08.2004, 22:16     # 7
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Ну, мне нужен конкретный пример.
По обеим ссылкам написано не на языке для учащихся, а на чем-то более сложном..
Psionic Vision вне форума  
Старый 15.08.2004, 22:58     # 8
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
$DB_site->query("SELECT pa.* FROM portal_articles pa, portal_sections ps WHERE pa.sectionid = ps.sectionid ORDER BY ps.sectiontitle")
__________________
Nunc est bibendum
is_absent вне форума  
Старый 16.08.2004, 02:24     # 9
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
is_absent
А с пошаговым объяснением?
Что делает точка? Почему portal_articles pa - почему там пробел? Что такое через запятую?

Выбрать столбик pa из portal_articles и ps из portal_sections?
Но что за звездочка?

Новый вопрос:
какое среднее допустимое колво query на одну страницу (я понимаю, что чем меньше тем лучше).
Psionic Vision вне форума  
Старый 16.08.2004, 05:41     # 10
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Что такое 'pa' и что такое 'ps'??
Psionic Vision вне форума  
Старый 16.08.2004, 06:56     # 11
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Neo
pa.* -- выбрать все поля из таблички pa
pa и ps -- альясы (короткие имена) для таблиц, чтобы не писать их полностью.
среднее число запросов... вообще рекомендуемое время ответа сервера в браузер (в какой-то книжке прочитал, кажется "Не заставляйте меня думать") 1 -3 секунды. вот и считай укладываешься -- замечательно. нет -- оптимизируй запросы
__________________
Nunc est bibendum
is_absent вне форума  
Старый 16.08.2004, 12:55     # 12
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
Neo:
Что делает точка? Почему portal_articles pa - почему там пробел? Что такое через запятую?
Точка - разделитель имени таблицы от имени поля. user.name, user.addr
portal_articles pa - это полное имя и сокращение (альяс).
Через запятую пишутся имена полей или именя таблиц.
EvroStandart вне форума  
Старый 16.08.2004, 18:25     # 13
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
То есть,
запрос

Цитата:
$DB_site->query("SELECT pa.* FROM portal_articles pa, portal_sections ps WHERE pa.sectionid = ps.sectionid ORDER BY ps.sectiontitle")
Выбирает все поля из таблицы pa, но сравнивает их с таблицей ps и берет только те, где одинаковые sectionid, а затем сортирует их по sectiontitle из второй таблицы??

Хм. Это не совсем то. А что если мне надо следующее:

Выбрать всю инфу из таблицы portal_articles, но в результат вложить также user.username и user.realname?

А что если сделать так:
SELECT pa.*,user.username,user.realname FROM portal_articles pa, user ORDER BY pa.patitle?

Это будет работать как ожидается? Т.е. мне нужно, чтобы поля из таблицы user Добавлялись только к тем строкам, которые совпали с условием, но чтобы лишние строки из таблицы user не выбирались?

Последний раз редактировалось Neo; 16.08.2004 в 18:28.
Psionic Vision вне форума  
Старый 16.08.2004, 19:37     # 14
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Да, вроде работает. Правда немножно измененно. так что, на все, что до этой строки, можете не отвечать.

Кое что посложнее:
Если я хочу дать запрос, который выдаст мне список всех portal_articles и portal_sections.sectiontitle WHERE ps.sectionid = pa.sectionid?
Так, чтобы:
в $result[data] были portal_articles, а в $result[sectiontitle] было sections.sectiontitle.
Наверное, это уже невозможно?

Т.е. как совместить следующие два запроса:

$result[data] = $DB_site->query("SELECT * FROM portal_articles WHERE groupid='".$groupid."'");
$result[title] = $DB_site->query("SELECT grouptitle FROM portal_groups WHERE groupid='".$groupid."'");

Да, кстати. С помощью предыдущей инфы я оптимизировал мой сайт на 2 запроса )))
Psionic Vision вне форума  
Старый 16.08.2004, 19:53     # 15
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Neo
$DB_site->query("SELECT pa.*, grouptitle FROM portal_articles pa, portal_groups pg WHERE pg.groupid=pa.groupid and pa.groupid='".$groupid."'");
по нужным массивам и сам разложишь

Можно совет? Купи себе Дейта "Основы баз данных". Очень помогает, при решении подобных проблем. По собственному опыту знаю. Изучал базы данных с него. Еще с третьего издания. Сейчас должно быть седьмое (или восьмое).
__________________
Nunc est bibendum
is_absent вне форума  
Старый 16.08.2004, 20:53     # 16
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
is_absent
Цитата:
$DB_site->query("SELECT pa.*, grouptitle FROM portal_articles pa, portal_groups pg WHERE pg.groupid=pa.groupid and pa.groupid='".$groupid."'");
по нужным массивам и сам разложишь
Нет, ты не понял. Как же я разложу, если pa.* - это много rows, а grouptitle - это только один row? Или, для каждого pa.* это значение высчитывается заново?


Цитата:
Можно совет? Купи себе Дейта "Основы баз данных". Очень помогает, при решении подобных проблем. По собственному опыту знаю. Изучал базы данных с него. Еще с третьего издания. Сейчас должно быть седьмое (или восьмое).
Хорошо
Psionic Vision вне форума  
Старый 17.08.2004, 06:40     # 17
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Цитата:
Neo:
Нет, ты не понял. Как же я разложу, если pa.* - это много rows, а grouptitle - это только один row? Или, для каждого pa.* это значение высчитывается заново?
Да, будет высчитываться заново.
__________________
Nunc est bibendum
is_absent вне форума  
Старый 17.08.2004, 16:01     # 18
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
is_absent
Хм... понятно.
Значит, сделать один запрос так, чтобы он вывел часть результата в одно место, а часть в другое - нельзя?
Psionic Vision вне форума  
Старый 17.08.2004, 23:35     # 19
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Итак, это:

$result = mysql_fetch_assoc($DB_site->query("SELECT pa.*,user.username FROM portal_articles pa, user WHERE user.userid = pa.userid ORDER BY pa.articleid DESC LIMIT 1"))

Не совсем так работает, как хотелось бы.
Допустим, у меня в базе статья с пользователем у которого ID - '-1' - т.е. без пользователя. В результате данного запроса, такие статьи просто пропускаются. А как сделать чтобы они не пропускались, а выводили для поля user значение "NaN"?

Т.е, чтобы результат был в таких случаях примерно такой:
$result {
[articleid] => int "1",
[pagetext] => string(12) "Pagetext....",
[userid] => string(2) "-1",
[username] => string(3) "NaN",
}

Это все можно сделать, запрашивая для каждого article отдельно инфу о юзере. Но это - дополнительный запрос... Хотелось бы избежать.
Помогите пожалуйста.
Спасибо,
Neo
Psionic Vision вне форума  
Старый 18.08.2004, 09:34     # 20
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
странно ты как то делаешь...

обычно:

$res = mysql_query

//проверка (например на кол-во возвращенным записей)

while($row = mysql_fetch_assoc($res))
{
//обработка $row <- ассоциативный массив
}
__________________
убрано по просьбе администратора
Sheryld вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 17:13.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.