Displaying 11-17 of 17 results.
Resolved: MySQL get most popular tags ids combination with their counts
posted by admin on April 18, 2016
I have three tables
1.tbl_tag

id int NOT NULL AI PK
name VARCHAR(50) NOT NULL

id name
1 lifestyle
2 store
3 car
4 luxury
5 classy
6 boy
7 girl
8 man
9 woman
10 strong
etc ...


2.tbl_media

id int NOT NULL AI PK
name VARCHAR(50) NOT NULL

id name
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine
10 ten
etc...


3. tbl_media_tag

id int NOT NULL AI PK
media_id int NOT NULL -> relationship with tbl_media
tag_id int NOT NULL -> relationship with tbl_tag

id media_id tag_id
1 1 4
2 1 3
3 4 3
4 5 2
5 6 8
6 4 4
7 8 7
8 7 4
9 7 3
10 6 2
11 8 4
12 8 3
etc...


I want to get most popular tags(tag_id) combinations with LIMIT, for example most popular top ten tags combination

I want to get result like this

4, 7, 3 (75)
4, 8 (42)
1, 7, 9, 10 (28)
7, 8, 9 (10)
7, 2 (2)
Read more
Resolved: Post views counts in Mysql. Better way to do it?
posted by admin on March 23, 2016
I have blog. And I want to construct my views count table. Please help me make it better.

id, name, ..., views, ...

I don't want structure like this, I want individual tableRead more
Resolved: MySQL get most popular categories with posts counts (category and posts tables)
posted by admin on March 16, 2016
I have categories table btbl_category

CREATE TABLE btbl_category(
id int auto_increment primary key,
name varchar(20)
);

INSERT INTO btbl_category (name)
VALUES
('one'),('two'),('three'),('four');

INSERT INTO apps (app_category)
VALUES
(2),(4),(2),(1);


I have categories table btbl_post

CREATE TABLE btbl_post
(
id int auto_increment primary key,
category_id int,
);

INSERT INTO btbl_post (category_id)
VALUES
(2),(4),(2),(1);


I want to select most popular categories with countsRead more
Resolved: MySQL задание менеджер, продукт, заявки, продажы. Задача из собеседования - PHP разработчик
posted by admin on March 16, 2016
Даны следующие две таблицы:

--
-- Структура таблицы `claim`
--
CREATE TABLE IF NOT EXISTS `claim` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`manager_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`sum` float NOT NULL,
PRIMARY KEY (`id`),
KEY `manager_id` (`manager_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
--
-- Дамп данных таблицы `claim`
--

INSERT INTO `claim` (`id`, `manager_id`, `created_at`, `sum`) VALUES
(1, 1, '2013-07-18 10:23:08', 256.128),
(2, 3, '2013-07-18 13:29:49', 512.1),
(3, 4, '2013-07-19 16:29:07', 123),
(4, 4, '2013-07-18 17:35:53', 321),
(5, 4, '2013-06-19 15:31:46', 756),
(6, 1, '2013-06-05 10:47:26', 265),
(7, 2, '2013-05-31 20:27:38', 354),
(8, 4, '2013-07-17 15:48:20', 798.12);
----------------------------------------------------------

--
-- Структура таблицы `manager`
--
CREATE TABLE IF NOT EXISTS `manager` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(32) CHARACTER SET latin1 NOT NULL,
`last_name` varchar(32) CHARACTER SET latin1 NOT NULL,
`email` varchar(32) CHARACTER SET latin1 NOT NULL,
`chief_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `chief_id` (`chief_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Дамп данных таблицы `manager`
--
INSERT INTO `manager` (`id`, `first_name`, `last_name`, `email`, `chief_id`) VALUES
(1, 'Simple', 'Manager', '', 2),
(2, 'Super', 'Manager', '', NULL),
(3, 'Third ', 'Manager', '', 2),
(4, 'Just', 'Manager', '', NULL);

--
-- Ограничения внешнего ключа таблицы `claim`
--
ALTER TABLE `claim`
ADD CONSTRAINT `claim_ibfk_1` FOREIGN KEY (`manager_id`) REFERENCES `manager` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Ограничения внешнего ключа таблицы `manager`
--
ALTER TABLE `manager`
ADD CONSTRAINT `manager_ibfk_1` FOREIGN KEY (`chief_id`) REFERENCES `manager` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;


Задача 1

Напишите sql-запрос, выбирающий информацию по каждому менеджеру, включая количество связанных с ним заявок и их общую сумму (в 2 дополнительных поля: claim_count, claim_total_sum).


Задача 2

Напишите запрос, который выведет двух менеджеров, у которых количество связанных заявок меньше, чем у остальных. При этом, объедините значения first_name и last_name в одно поле full_name.
Read more
Resolved: Three table MySQL relation task, city, product, sale max join query
posted by admin on March 11, 2016
We have three tables, city, product, sale

city
  • id PK AI INT(10)
  • name VARCHAR(50)


product
  • id PK AI INT(10)
  • name VARCHAR(50)


sale
  • id PK AI INT(10)
  • city_id INT(10)
  • product_id INT(10)
  • amount INT(10)
  • total_price INT(10)


Task, Задача

Написать SQL-запрос, который выведет результат вида: город, товар, количество проданного товара, итоговая сумма. Т.е. для каждого города и для каждого товара нужно вывести сколько было продано данного товара и на какую сумму. Если в каком-то городе какой-то товар не был продан вовсе — выводить нули в полях "количество" и "сумма".
Read more
Wiki: MySQL: отличия между MyISAM и InnoDBwiki
posted by admin on March 9, 2016
Отличия между системами хранения данных MyISAM и InnoDB простым языком.

В данной таблице я попробовал показать разницу между MyISAM и InnoDB на простых примерах:


Транзакционный движек?
Транзакция (Transaction) — блок операторов SQL , который в случае ошибки в одном запросе, возвращается к предыдущему состоянию (Rollback), и только в случае выполнения всех запросов подтверждается (Commit)

MyISAM Нет
InnoDB Да


Поддержка внешних ключей.
Внешние ключи — это способ связать записи в двух таблицах по определенным полям так, что при обновлении поля в родительской автоматически происходит определенное изменение поля в дочерней (дочернюю и родительскую выбираешь при создании ключа; точнее, создаешь ключ в дочерней, который ссылается на родительскую).

MyISAM Нет
InnoDB Да


Блокировка.
Блокировка на уровне строк, т.е. если процессу нужно обновить строку в таблице, то он блокирует только эту строку, позволяя другим обновлять другие строки параллельно

MyISAM Блокировка на уровне таблиц
InnoDB Блокировка на уровне строкк


Одновременные запросы к разным частям таблицы.

MyISAM Медленнее
InnoDB Быстрее


При смешанной нагрузке в таблице (select/update/delete/insert)

MyISAM Медленнее
InnoDB Быстрее


Операция Insert

MyISAM Быстрее
InnoDB Медленнее, ибо есть оверхед на транзакцию, но это цена надежности


Если преобладают операции чтения (SELECT)

MyISAM Работает быстрее
InnoDB Работает медленнее


Deadlock.
Deadlock — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии бесконечного ожидания ресурсов, захваченных самими этими процессами.

MyISAM Не возникают
InnoDB Возможны


Поддержка полнотекстового поиска

MyISAM Да
InnoDB Нет (доступен начиная с версии MySQL 5.6.4)


Запрос Count(*)

MyISAM Быстрее
InnoDB Медленнее


Поддержка mysqlhotcopy.
Утилита mysqlhotcopy представляет собой Perl-сценарий, использующий SQL-команды LOCK TABLES, FLUSH TABLES и Unix-утилиты cp или scp для быстрого получения резервной копии базы данных.

MyISAM Да
InnoDB Нет


Файловое хранение таблиц

MyISAM Каждой таблице отдельный файл
InnoDB Данные при настройках по умолчанию хранятся в больших совместно используемых файлах


Бинарное копировании таблиц?
Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования.

MyISAM Да
InnoDB Нет


Размер таблиц в БД

MyISAM Меньше
InnoDB Больше


Поведение в случае сбоя

MyISAM Крашится вся таблица
InnoDB По логам можно все восстановить


В случае хранения «логов» и подобного

MyISAM Лучше
InnoDB Хуже

Выводы:
  • Использовать MyISAM лучше в таблицах, которых преобладает один вид доступа: чтение (новостной сайт) или запись (например, логирование) ;
  • Использование InnoDB имеет смысл во всех остальных случаях и случаях повышенных требований по сохранности данных.
Read more
Resolved: Задача MySQL. Выбрать из таблицы тех пользователей,которые не делали покупки
posted by gevor on February 5, 2016
Есть две таблицы

Users
id - PK, AI int(10)
username - varrchar(255)

Sales
id - PK, AI, int(10)
user_id - index(user->id), int(10)
counts - int(10)

связи между таблицами установлены
нужно написать запрос для выбора пользователей,которые не делали покупки.Read more