Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запросы к базе

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vlom
Отправлено: 03 Августа, 2011 - 21:23:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




Уже как рыба головой об лед - не могу написать запросы и все
Помогите кому не в тягость пожалуйста
есть четыре вот такие таблички
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `db`.`customers` (
  2. `id` INT NOT NULL AUTO_INCREMENT ,
  3. `name` VARCHAR(45) NULL ,
  4. PRIMARY KEY (`id`) )
  5. ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
  6.  
  7. CREATE TABLE `db`.`orders` (
  8. `id` INT NOT NULL AUTO_INCREMENT ,
  9. `customer_id` INT NULL ,
  10. PRIMARY KEY (`id`) )
  11. ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
  12.  
  13. CREATE TABLE `db`.`products` (
  14. `id` INT NOT NULL AUTO_INCREMENT ,
  15. `title` VARCHAR(255) NULL ,
  16. PRIMARY KEY (`id`) )
  17. ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
  18.  
  19. CREATE TABLE `db`.`order_product_rel` (
  20. `id` INT NOT NULL AUTO_INCREMENT ,
  21. `order_id` INT NULL ,
  22. `amount` INT NULL ,
  23. PRIMARY KEY (`id`) )
  24. ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;


необходимо вывести вот такие запросы
1) Написать SQL запрос для получения списка всех клиентов и количества заказов, сделанных каждым клиентом (у некоторых клиентов может не быть заказов).
2) Написать SQL запрос для получения уникальных наименований товаров, которые ни разу не были заказаны клиентами.
3) Вывести имена клиентов, сделавших более 5-ти заказов.
 
 Top
EuGen Администратор
Отправлено: 03 Августа, 2011 - 21:31:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vlom
Отправлено: 03 Августа, 2011 - 21:48:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 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'
 
 Top
EuGen Администратор
Отправлено: 03 Августа, 2011 - 22:12:38
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Занятно, в агрегирующих функциях и не разрешено таблица.* ? Пока исправлю на *, но уверен, что в 5.1 это разрешено, проверю.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vlom
Отправлено: 03 Августа, 2011 - 22:19:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




EuGen блин спасибо тебе огромное
такой вопрос, подскажи какую нибудь хорошую литературу по MySQL
только чтобы не слишком нудно как в оф мануале, но также подробно)))
(Добавление)
и к стати у меня Версия сервера: 5.1.53-community
(Добавление)
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE  TABLE `insis`.`order_product_rel` (
  3.     `order_id` INT NOT NULL,
  4.     `product_id` INT NULL ,
  5.     `amount` INT NULL)
  6. ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
  7.  


последний запрос на создание таблицы я не правильно написал)))))
(Добавление)
для второго задания попытался сам написать запрос но что-то не так
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `order_product_rel`.`*`, COUNT(`products`.`id`)
  2. FROM `insis`.`order_product_rel`
  3. LEFT JOIN `order_product_rel`
  4. ON (`order_product_rel`.`product_id`=`products`.`id`)
  5. GROUP BY `order_product_rel`.`product_id`;

где ошибка???
(Добавление)
ща вот так переделал
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `products`.*, COUNT(`order_product_rel`.`product_id`)
  2. FROM `insis`.`products`
  3. LEFT JOIN `order_product_rel`
  4. ON (`order_product_rel`.`product_id`=`products`.`id`)
  5. GROUP BY `order_product_rel`.`product_id`;

выводит, но не то что мне надо
 
 Top
Arni
Отправлено: 03 Августа, 2011 - 23:24:20
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




Если у вас windows, поставьте себе http://www[dot]devart[dot]com/ru/dbforge/mysql/studio/ и не мучайте людей глупыми вопросами. dbforge подчеркивает места с ошибками, я один раз чуть сума не сошол, если бы не она то точно бы двинулся. Взял пример запроса с сайта, часа 2 ломал голову в чем дело, оказалось в примере вместо знака (- минус) ( - тере) вставили.
 
 Top
vlom
Отправлено: 03 Августа, 2011 - 23:26:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




испльзую MySQL Workbench, тоже как бы синтаксические ошибки подсвечивает
 
 Top
EuGen Администратор
Отправлено: 04 Августа, 2011 - 21:28:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT products.title FROM products LEFT JOIN order_products_rel ON products.id=order_products_rel.product_id WHERE order_products_rel.id IS NULL


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB