Общие > Базы данных
Сложный запрос
Rodent:
И еще маленький вопросик по той же теме:
таблица post с полями id_forum id_post text name user_id date
таблица user с полями id_user login city
При выборке допустим 10 последних постов, через цикл for я каждый раз если user_id!=0 (значит не гость) использую запрос к таблице user что узнать данные о данном пользователе.
Мне так и продолжать таким образом выяснять данные или можно с помощью сложного запроса, и стоит ли это делать?
Макс:
1. Мой запрос не использует поле last_post. В строке
--- Код: --- MAX( p.date ) AS last_post
--- Конец кода ---
last_post - это не поле, а псевдоним для значения MAX(p.date)
Хотя на твоей таблице это действительно не сработает, так как сейчас у тебя там есть поле с именем last_post.
Попробуй :
--- Код: ---SELECT f. * , MAX( p.date ) AS my_last_post
FROM forum f
INNER JOIN post p ON p.id_forum = f.id_forum
GROUP BY p.id_forum
ORDER BY my_last_post DESC
--- Конец кода ---
2. По поводу юзеров :
--- Код: ---
SELECT f. * , MAX( p.date ) AS last_post, u.*
FROM forum f
INNER JOIN post p ON p.id_forum = f.id_forum
LEFT JOIN user u ON u.id_user = p.user_id
GROUP BY p.id_forum
ORDER BY last_post DESC
--- Конец кода ---
вроде так
Rodent:
Макс
Огромное спасибо.
С форумами дело пошло, а вот с юзерами придеться покопаться...
Щас я немного прокручу в голове что получается...
и если так и не разберусь обязательно задам еще вопросы :-)
Rodent:
Так\'c тут маленький вопросик возник по правильности написания запросов
Например, из запроса мне нужно вытащить допустим 3 переменных, хотя в самой таблице около 15 колонок, мне ставить * или все таки те которые мне нужны? А если их будет 5-6? или 2-3 таблице по 10-15 колонок, а мне из каждой только по 2-3 переменных?
Макс:
Я действую примерно по такому принципу :
если реально надо менее 50% - 75% полей (точное число зависит от моей лени в данный момент времени) то перечисляю поля руками.
Исключением являются случаи, если в таблице есть большие поля (TEXT, BLOB) значения которых мне не нужны - тогда тоже ручками перечисляю поля.
Навигация
Перейти к полной версии