ENGINE = MyISAM DEFAULT CHARACTER SET= utf8 COLLATE = utf8_general_ci;
CREATETABLE`db`.`orders`(
`id` INT NOTNULLAUTO_INCREMENT,
`customer_id` INT NULL,
PRIMARYKEY(`id`))
ENGINE = MyISAM DEFAULT CHARACTER SET= utf8 COLLATE = utf8_general_ci;
CREATETABLE`db`.`products`(
`id` INT NOTNULLAUTO_INCREMENT,
`title` VARCHAR(255)NULL,
PRIMARYKEY(`id`))
ENGINE = MyISAM DEFAULT CHARACTER SET= utf8 COLLATE = utf8_general_ci;
CREATETABLE`db`.`order_product_rel`(
`id` INT NOTNULLAUTO_INCREMENT,
`order_id` INT NULL,
`amount` INT NULL,
PRIMARYKEY(`id`))
ENGINE = MyISAM DEFAULT CHARACTER SET= utf8 COLLATE = utf8_general_ci;
необходимо вывести вот такие запросы
1) Написать SQL запрос для получения списка всех клиентов и количества заказов, сделанных каждым клиентом (у некоторых клиентов может не быть заказов).
2) Написать SQL запрос для получения уникальных наименований товаров, которые ни разу не были заказаны клиентами.
3) Вывести имена клиентов, сделавших более 5-ти заказов.
EuGen
Отправлено: 03 Августа, 2011 - 21:31:46
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
1.
SELECT COUNT(*) AS orders_count, customers.name FROM orders LEFT JOIN customers ON orders.customer_id=customers.id GROUP BY orders.customer_id
2.
Запрос не возможен, так как неверно построена связка (в таблице-связке нет идентификатора продукта)
3.
SELECT COUNT(*) AS orders_count, customers.name FROM orders LEFT JOIN customers ON orders.customer_id=customers.id GROUP BY orders.customer_id HAVING orders_count>5
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 03 Августа, 2011 - 21:48:44
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
EuGen оба запроса выводят ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*' at line 1
так же MySQL Workbench подсвечивает '*' как синтаксическую ошибку
если * зять в обратные кавычки то такая ошбка
Unknown column 'orders.*' in 'field list'
EuGen
Отправлено: 03 Августа, 2011 - 22:12:38
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Занятно, в агрегирующих функциях и не разрешено таблица.* ? Пока исправлю на *, но уверен, что в 5.1 это разрешено, проверю.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 03 Августа, 2011 - 22:19:36
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
EuGen блин спасибо тебе огромное
такой вопрос, подскажи какую нибудь хорошую литературу по MySQL
только чтобы не слишком нудно как в оф мануале, но также подробно))) (Добавление)
и к стати у меня Версия сервера: 5.1.53-community (Добавление)
Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011
Помог: 2 раз(а)
Если у вас windows, поставьте себе http://www[dot]devart[dot]com/ru/dbforge/mysql/studio/ и не мучайте людей глупыми вопросами. dbforge подчеркивает места с ошибками, я один раз чуть сума не сошол, если бы не она то точно бы двинулся. Взял пример запроса с сайта, часа 2 ломал голову в чем дело, оказалось в примере вместо знака (- минус) ( - тере) вставили.
vlom
Отправлено: 03 Августа, 2011 - 23:26:58
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
испльзую MySQL Workbench, тоже как бы синтаксические ошибки подсвечивает
EuGen
Отправлено: 04 Августа, 2011 - 21:28:21
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
SELECTDISTINCT products.title FROM products LEFTJOIN order_products_rel ON products.id=order_products_rel.product_id WHERE order_products_rel.id ISNULL
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.