|
|
|
| Имеется таблица
-- phpMyAdmin SQL Dump
-- version 3.3.7
-- http://www.phpmyadmin.net
--
-- Хост: mysql1
-- Время создания: Янв 18 2012 г., 13:22
-- Версия сервера: 5.0.51
-- Версия PHP: 5.3.3-7+squeeze3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- База данных: `deadmou5`
--
-- --------------------------------------------------------
--
-- Структура таблицы `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) character set utf8 NOT NULL,
`grade` decimal(5,0) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
--
-- Дамп данных таблицы `users`
--
INSERT INTO `users` (`id`, `name`, `score`) VALUES
(2, 'Дмитрий', 4),
(3, 'Алексей', 6),
(4, 'Лена', 3),
(5, 'Леха', 4),
(6, 'Олег', 6),
(7, 'Сергей', 4),
(8, 'Азик', 5),
(9, 'Андрей', 1),
(10, 'Гали', 3),
(11, 'Саша', 7),
(12, 'Фанарь', 2);
|
и
-- phpMyAdmin SQL Dump
-- version 3.3.7
-- http://www.phpmyadmin.net
--
-- Хост: mysql1
-- Время создания: Янв 18 2012 г., 13:21
-- Версия сервера: 5.0.51
-- Версия PHP: 5.3.3-7+squeeze3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- База данных: `deadmou5`
--
-- --------------------------------------------------------
--
-- Структура таблицы `plus`
--
CREATE TABLE IF NOT EXISTS `plus` (
`like_ID` int(11) NOT NULL,
`liked_ID` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Дамп данных таблицы `plus`
--
INSERT INTO `plus` (`plus_ID`, `plused_ID`) VALUES
(4, 6),
(7, 3),
(5, 7),
(5, 7),
(4, 7),
(5, 10),
(12, 2),
(8, 2),
(5, 4),
(7, 5);
|
Так вот, используя запрос
SELECT plused_ID as pID FROM plus GROUP BY pID HAVING COUNT(pID) > 1 ORDER BY COUNT(pID)
|
Мне выводятся ID пользователей которым поставили + более одного раза.
Как теперь объединить полученное с SELECT name, score FROM users WHERE id = pID
Вроде как JOIN должен подходить, но я так и не понял как им пользоваться или просто у меня бэдзапросы получаются.
Пробовал вот такой запрос послать
SELECT `id` FROM users LEFT JOIN plus GROUP BY plus.plused_ID HAVING COUNT(plus.plused_ID) > 1
WHERE id.users = plus.plused_ID
ORDER BY COUNT(plus.plused_ID)
|
но ошибка синтаксиса!(
Как разберусь с этим задам еще вопросов. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(18.01.2012 в 18:49)
| | 1) при CHARSET=latin1 будут проблемы с русскими буквами
2) а где, собственно, плюс ставиться? я не могу понять, как это вообще может работать:
CREATE TABLE IF NOT EXISTS `plus` (
`like_ID` int(11) NOT NULL,
`liked_ID` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Дамп данных таблицы `plus`
--
INSERT INTO `plus` (`plus_ID`, `plused_ID`)
Вставляется like_ID или plus_ID? Что-то одно другому не соответствует...
А вообще, ошибка вот почему: http://ru.wikipedia.org/wiki/Having_(SQL) (Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY). Думаю, запрос ID пользователей которым поставили + более одного раза нужно вставить во второй запрос в качестве подзапроса | |
|
|
|
|
|
|
|
для: kosta_in_net
(19.01.2012 в 13:35)
| | `like_ID` int(11) NOT NULL,
`liked_ID` int(11) NOT NULL
Это так ошибка моя.. Там на самом деле plus_ID и plused_ID | |
|
|
|
|
|
|
|
для: kosta_in_net
(19.01.2012 в 13:35)
| | Спасибо! Решил проблему. Помогло очень! | |
|
|
|
|