Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск полученных значений одной таблицы в другой
 
 автор: Гавриленко Дмитрий   (18.01.2012 в 18:49)   письмо автору
 
 

Имеется таблица



-- 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)

но ошибка синтаксиса!(


Как разберусь с этим задам еще вопросов.

  Ответить  
 
 автор: kosta_in_net   (19.01.2012 в 13:35)   письмо автору
 
   для: Гавриленко Дмитрий   (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 пользователей которым поставили + более одного раза нужно вставить во второй запрос в качестве подзапроса

  Ответить  
 
 автор: Гавриленко Дмитрий   (19.01.2012 в 16:59)   письмо автору
 
   для: kosta_in_net   (19.01.2012 в 13:35)
 

`like_ID` int(11) NOT NULL,
`liked_ID` int(11) NOT NULL

Это так ошибка моя.. Там на самом деле plus_ID и plused_ID

  Ответить  
 
 автор: Гавриленко Дмитрий   (19.01.2012 в 17:50)   письмо автору
 
   для: kosta_in_net   (19.01.2012 в 13:35)
 

Спасибо! Решил проблему. Помогло очень!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования