| imho.ws |
![]() |
|
|
|
# 1 |
|
Full Member
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Два вопроса по MYSQL
1. Как узнать, сколько queries было запущено на данной странице?
2. Если я хочу сделать выборку инфы из одной таблицы, но упорядочить по качеству значения из другой таблицы возможно ли это? Пояснение: $DB_site->query("SELECT * FROM portal_articles ORDER BY ----TUT PROBLEMA ----") В таблице есть столбик sectionid Есть таблица portal_sections со столбиками sectionid, sectiontitle. Так вот, можно ли использую только тот первый query упорядочить результат по sectiontitle из второй таблицы? |
|
|
|
|
# 2 | ||
|
МОД-Оператор ЭВМ
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Последний раз редактировалось RaZEr; 15.08.2004 в 06:39. |
||
|
|
|
|
# 3 | |
|
Full Member
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Выбираеш поля из двух таблиц и устанавливаеш порядок по любому из выбранных полей. |
|
|
|
|
|
# 9 |
|
Full Member
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
is_absent
А с пошаговым объяснением? Что делает точка? Почему portal_articles pa - почему там пробел? Что такое через запятую? Выбрать столбик pa из portal_articles и ps из portal_sections? Но что за звездочка? Новый вопрос: какое среднее допустимое колво query на одну страницу (я понимаю, что чем меньше тем лучше). |
|
|
|
|
# 11 |
|
::VIP::
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417
![]() ![]() ![]() |
Neo
pa.* -- выбрать все поля из таблички pa pa и ps -- альясы (короткие имена) для таблиц, чтобы не писать их полностью. среднее число запросов... вообще рекомендуемое время ответа сервера в браузер (в какой-то книжке прочитал, кажется "Не заставляйте меня думать") 1 -3 секунды. вот и считай укладываешься -- замечательно. нет -- оптимизируй запросы
__________________
Nunc est bibendum |
|
|
|
|
# 12 | |
|
Full Member
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
portal_articles pa - это полное имя и сокращение (альяс). Через запятую пишутся имена полей или именя таблиц. |
|
|
|
|
|
# 13 | |
|
Full Member
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
То есть,
запрос Цитата:
Хм. Это не совсем то. А что если мне надо следующее: Выбрать всю инфу из таблицы 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. |
|
|
|
|
|
# 14 |
|
Full Member
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Да, вроде работает. Правда немножно измененно. так что, на все, что до этой строки, можете не отвечать.
Кое что посложнее: Если я хочу дать запрос, который выдаст мне список всех 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 запроса )))
|
|
|
|
|
# 15 |
|
::VIP::
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417
![]() ![]() ![]() |
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 |
|
|
|
|
# 16 | ||
|
Full Member
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
is_absent
Цитата:
Цитата:
|
||
|
|
|
|
# 17 | |
|
::VIP::
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417
![]() ![]() ![]() |
Цитата:
__________________
Nunc est bibendum |
|
|
|
|
|
# 19 |
|
Full Member
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Итак, это:
$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 |
|
|
|
|
# 20 |
|
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
странно ты как то делаешь...
обычно: $res = mysql_query //проверка (например на кол-во возвращенным записей) while($row = mysql_fetch_assoc($res)) { //обработка $row <- ассоциативный массив }
__________________
убрано по просьбе администратора
|
|
|