|
|
|
| Имеется 2 таблицы
1- users
2- Post
CREATE TABLE `users` (
`id` int(255) NOT NULL auto_increment,
`login` varchar(10) NOT NULL default '-',
`pass` varchar(20) NOT NULL default '-',
`email` varchar(30) NOT NULL default '-',
`data` varchar(30) NOT NULL default '-',
`money` int(10) NOT NULL default '0',
`bals` int(10) NOT NULL default '0',
`ip` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
|
и
CREATE TABLE `Post` (
`id` int(10) NOT NULL auto_increment,
`abc` varchar(2) NOT NULL default '',
`kompoz` varchar(100) NOT NULL default '',
`data` varchar(30) NOT NULL default '',
`link` varchar(255) NOT NULL default '',
`down` int(10) NOT NULL default '0',
`active` int(2) NOT NULL default '0',
`autor` varchar(100) NOT NULL default '',
`login` varchar(100) NOT NULL default 'Admin',
`moder` int(2) NOT NULL default '1',
`xtest` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
|
Нужно составить запрос который выводил бы всех пользователей из таблицы users у которых поле login не равнялось "-" и с сортированием по количеству постов из 2 таблицы. т.е.
если пользователь с логином User1 добавил 3 поста то в таблице Post будет 3 строки со значением User1 в поле login, и если кроме этого пользователя не добавил больше чем 3 поста то он выводится первым соответственно.
Проблема в том что я не понимаю как работать с соединениями таблиц, группировками и прочими сложностями - поэтому обращаюсь за помощью к вам!!! Помогите пожалуйста!!! | |
|
|
|
|
|
|
|
для: fivemusic
(04.11.2007 в 17:13)
| | Вам нужно, чтобы выводился список пользователей, которые оставили какое-то сообщение, и чтобы этот список выводился в порядке убывания? Т.е. чем меньше сообщений оставил пользователь, тем ниже он будет в списке? А те, кто не оставил сообщений - вообще не будет в списках. | |
|
|
|
|
|
|
|
для: morkovkin
(05.11.2007 в 10:44)
| | Собственно почти так! " чем меньше сообщений оставил пользователь, тем ниже он будет в списке" - это верно . "А те, кто не оставил сообщений - вообще не будет в списках." - тогда запрос составить было бы легко (просто обратясь к таблице ПОСТ сгруппировав по логинам и отсортировав по кол-ву повторений), мне надо чтобы выводились все юзеры с таблицы USERS с сортировкой по кол-ву сообщений добавленных в таблицу POST в порядке убывания. | |
|
|
|
|
|
|
|
для: fivemusic
(05.11.2007 в 12:39)
| | Cheops Вам подсказал правильное решение. Просто другие способы могут быть ещё более мучительными. А здесь один раз пропустить через скрипт, и добавить строчку кода, чтобы плюсовалось при добавлении и всё. И при конечном раскладе весь Ваш замысел, легко осуществится. | |
|
|
|
|
|
|
|
для: fivemusic
(04.11.2007 в 17:13)
| | Проще и быстрее добавить в таблицу users поле posts, которое увеличивать на единицу, если пользователь помещает запись в таблицу Post. | |
|
|
|
|
|
|
|
для: cheops
(05.11.2007 в 11:34)
| | да я это понимаю, что проще по столбцу считать! Просто уже поздно, БД наполнена. | |
|
|
|
|
|
|
|
для: fivemusic
(05.11.2007 в 12:36)
| | Почему поздно, добавить столбец и пройтись в цикле по всем пользователям. | |
|
|
|
|
|
|
|
для: cheops
(05.11.2007 в 12:38)
| | тогда придется передлывать в скрипте, например чтобы при добавлении плючовалось, при удалении минусовалось.
кстати вопрос можно в запросе указать так чтобы значение столбца XXX уменьшилось на единицу или учеличилось?
а не сделать запрос к этой таблице, узнав значение строки и приплюсовав 1. | |
|
|
|